6
我有一個Spring 3.2應用程序,我創建了一個基於Spring MVC的this示例之後的REST API。現在我在嘗試驗證某些數據用於不同的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字段,所以這個請求將成功完成。
什麼是正確的方法來處理這種情況:在某種請求方法,你不希望所有的字段被填滿(有些字段可能有默認值,因此你不想檢查所有他們,又名創建),而在另一種方法中,您必須檢查所有字段(又名更新)。
這是一個完美的答案。這是一個很好的一天,他們實施https://jira.springsource.org/browse/SPR-6373 – digitaljoel
這麼多留下來學習......非常感謝,謝謝! – jarandaf