У меня есть приложение Spring 3.2, и я создал REST API после примера this на основе Spring MVC. Теперь я испытываю некоторые проблемы при попытке проверить некоторые данные для разных методов http (например: POST и PUT).Проверка Spring Rest API
Это было бы очень упрощенный пример:
public class myItem{
@NotEmpty
private String foo;
@NotEmpty
private String bar;
public myItem(String foo){
this.foo = foo;
this.bar = "";
}
public myItem(String foo, String bar){
this.foo = foo;
this.bar = bar;
}
/* getters & setters omitted */
}
Этот POJO повторно используется в различных методов запроса.
Это будет мой упрощенный контроллер:
@Controller
@RequestMapping("/api/item")
public class myItemController{
@RequestMapping(value="/", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody myItem createItem(@Valid @RequestBody myItem item){
/* do some stuff */
return item; //inserted item returned
}
@RequestMapping(value="/", method=RequestMethod.PUT)
@ResponseStatus(HttpStatus.NO_CONTENT)
public @ResponseBody myItem createItem(@Valid @RequestBody myItem item){
/* do some stuff */
return item //updated item returned
}
}
В методе POST я только ожидать Foo поле для установки, поэтому этот запрос будет терпеть неудачу с, прежде чем выше аннотаций. В методе PUT я ожидаю, что будут установлены как поля foo, так и bar, поэтому этот запрос будет успешно завершен.
Каков правильный подход к решению подобных ситуаций: в определенном методе запроса вы не ожидаете заполнения всех полей (некоторые поля могут иметь значения по умолчанию, поэтому вы не хотите проверять все их, ака создать), а в другом методе вы должны проверить все поля (aka update).
Это идеальный ответ. Это был хороший день, когда они внедрили https://jira.springsource.org/browse/SPR-6373 – digitaljoel
так много осталось учиться ... Большое спасибо, спасибо! – jarandaf