在Spring REST API(POST)中读取查询字符串参数

时间:2014-11-18 17:53:12

标签: spring rest spring-mvc

My Spring REST API的装饰如下:

在下面,我很困惑天气,listoperation等参数需要作为查询字符串成为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{

1 个答案:

答案 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支持在发布的数据上添加验证。