Я создаю и обновляю вызовы api для тех же объектов. Если пользователь отправляет запрос PUT
без идентификатора объекта, контроллер принимает его как запрос POST
и создает новый объект.
Как я могу это предотвратить?
@POST
@Consumes({MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_XML})
public Response create(Entity entity){}
@PUT
@Path("/{id}")
@Consumes({ MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_XML })
public Response update(@PathParam("id") int id,Entity entity){}
Есть ли способ сделать параметр запроса необходимым для обновления? Это также может решить проблему.
Добавьте шаблон @Path
из вашего @Path
.
Синтаксис:
@Path("/{" variable-name [ ":" regular-expression ] "}")
Пример:
@Path("/{id: <replace_with_reg_exp>}")
@Path("/")
к методу POST. Теоретически, это заставит метод POST работать, только если к пути ничего не добавлено.