Spring 引导:如何将 JSON 对象添加到 GET 请求?
Spring Boot: How to add JSON Object to GET request?
我是 spring 引导新手。我有一个看起来像这样的 JSON 对象:
{
id: 3,
messageType: ["one", "two", "three"]
}
我有一个 class 表示对象:
public class Subscription {
public Subscription(@JsonProperty("id") long id, @JsonProperty("messageType") List<String> messageType) {
this.id = id;
this.messageType = messageType;
}
}
我有一个完美运行的 PUT 请求控制器:
@RequestMapping(value=SUBSCRIBE_URI, method=RequestMethod.PUT)
public ResponseEntity<String> updateSubscription(@RequestBody Subscription payload) throws Exception{
...
}
但是对于 GET 请求,我根本无法让它工作。当我使用 @RequestParam 并将 id 和 messageType 参数分开时,messageType 列表在字符串中有方括号(即“[one]”、“[two]”)。当我使用类似于 PUT 请求的@RequestBody 时,出现 400 错误。
将此 JSON 数据传递给 GET 请求而不在字符串中添加括号的正确方法是什么?
@RequestParam 只能将原始数据类型正确映射到它们各自的变量,特别是在 GET 的情况下,当它接收所有数据作为简单的字符串时。
另外,我不认为 messageType 需要是 List 数据类型。作为一个字符串,它将简单地接收作为纯字符串的值,不带括号。
您不能直接在请求参数上发送 JSON。您需要在要传递给服务器的 json 结构上调用 encodeURIComponent() 之类的操作,然后让参数只是一个字符串。在服务器端,您需要将字符串转换回您的模型对象。
我是 spring 引导新手。我有一个看起来像这样的 JSON 对象:
{
id: 3,
messageType: ["one", "two", "three"]
}
我有一个 class 表示对象:
public class Subscription {
public Subscription(@JsonProperty("id") long id, @JsonProperty("messageType") List<String> messageType) {
this.id = id;
this.messageType = messageType;
}
}
我有一个完美运行的 PUT 请求控制器:
@RequestMapping(value=SUBSCRIBE_URI, method=RequestMethod.PUT)
public ResponseEntity<String> updateSubscription(@RequestBody Subscription payload) throws Exception{
...
}
但是对于 GET 请求,我根本无法让它工作。当我使用 @RequestParam 并将 id 和 messageType 参数分开时,messageType 列表在字符串中有方括号(即“[one]”、“[two]”)。当我使用类似于 PUT 请求的@RequestBody 时,出现 400 错误。
将此 JSON 数据传递给 GET 请求而不在字符串中添加括号的正确方法是什么?
@RequestParam 只能将原始数据类型正确映射到它们各自的变量,特别是在 GET 的情况下,当它接收所有数据作为简单的字符串时。 另外,我不认为 messageType 需要是 List 数据类型。作为一个字符串,它将简单地接收作为纯字符串的值,不带括号。
您不能直接在请求参数上发送 JSON。您需要在要传递给服务器的 json 结构上调用 encodeURIComponent() 之类的操作,然后让参数只是一个字符串。在服务器端,您需要将字符串转换回您的模型对象。