My Spring REST API的装饰如下:
在下面,我很困惑天气,list
,operation
等参数需要作为查询字符串成为Url的一部分,或者它们是否需要作为表单数据的请求体的一部分(Url编码) )。
有些情况下,我在查询字符串中发送这些参数,它工作正常。但是我的几个api在生产上工作不正常,只有当我按照Url编码发送请求体中的数据时它们才有效。任何人都可以帮我解释一下这种行为吗?
@RequestMapping(value = "/bulkupdate/{companyId}", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<String> bulkupdateArticle(@RequestParam("list") String documentIdList,
@PathVariable("companyId") String companyId, @RequestParam("operation") String operation){
try{
答案 0 :(得分:1)
查看资源我发现它可以更好地设计为REST-ful方式。我不想在网址中看到驻留数据。
除了变得更加健康之外,它还可以让你更轻松。
我会创建一个数据传输对象,并将其作为POST请求的主体传递给资源/弹簧控制器。
从您的数据中获取:
public class ArticleToUpdate {
private String list; // list of what ? Maybe design it like List<String> somethingMoreMeaningFull
private String operation;
// .. getters
}
public ResponseEntity<String> bulkupdateArticle(@RequestBody ArticleToUpdate articleToUpdate) {
// .. do whatever you need with the posted data
现在,您可以在正文中发布JSON或XML文档,这可能会更容易。
此外,您还可以通过@Valid支持在发布的数据上添加验证。