【发布时间】:2016-10-28 05:00:46
【问题描述】:
我想弄清楚是否可以将 JSON 对象传递给 rest API,或者将多个参数传递给该 API?以及如何在 Spring 中读取这些参数?让我们假设 url 看起来像下面的例子:
例如1http://localhost:8080/api/v1/mno/objectKey?id=1&name=saif
像下面的 url 那样传递 JSON 对象是否有效?
例2http://localhost:8080/api/v1/mno/objectKey/{"id":1, "name":"Saif"}
问题:
1) 是否可以像 Ex.2 那样将 JSON 对象传递给 url?
2) 我们如何传递和解析Ex.1中的参数?
我尝试编写一些方法来实现我的目标,但找不到合适的解决方案?
我尝试将 JSON 对象作为 @RequestParam 传递
http://localhost:8080/api/v1/mno/objectKey?id=1出现意外错误(type=Unsupported Media Type, status=415). Content type 'null' not supported
http://localhost:8080/api/v1/mno/objectKey/id=1出现意外错误(type=Not Found, status=404). No message available
http://localhost:8080/api/v1/mno/objectKey/%7B%22id%22:1%7D出现意外错误(type=Not Found, status=404). No message available
@RequestMapping(value="mno/{objectKey}",
method = RequestMethod.GET,
consumes="application/json")
public List<Book> getBook4(@RequestParam ObjectKey objectKey) {
...
}
我尝试将 JSON 对象作为@PathVariable 传递
@RequestMapping(value="ghi/{objectKey}",method = RequestMethod.GET)
public List<Book> getBook2(@PathVariable ObjectKey objectKey) {
...
}
我创建了这个对象来保存 id 参数和其他参数,如 name 等......
class ObjectKey{
long id;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
【问题讨论】:
-
注解@RequestBody 并将对象作为正文传递呢?
-
您有什么特别的理由想要这样做吗?您应该能够从与实体匹配的请求中获取对象。
-
对不起,如果示例不准确,这只是一个概念证明,我希望能够根据搜索条件从数据库中获取建议项目列表。我将有一个调用其余 API 并传递参数的小部件。但我目前正试图专注于后端部分
标签: java json spring rest spring-mvc