当我像这样从Spring控制器返回Integer或其他包装器时:
@GetMapping(path = "test1")
public Integer test1() {
return 1;
}
对用户的回复具有以下内容:
1
这不是有效的JSON。是否有任何实践应如何返回这些值?令人担心的是,我希望所有API返回有效的JSON。我创建了一个返回的包装器:
{
"value": 1
}
但是,也许有更好的方法来解决这些情况?
答案 0 :(得分:1)
如果返回值以纯文本形式返回,例如返回String
且不带双引号,则以下条件成立:
您使用@RestController
或@ResponseBody
您的代码未指定响应内容类型
与JSON响应相比,客户端更喜欢文本响应
要强制对JSON进行响应,您需要通过指定以下内容告诉Spring:
@GetMapping(path = "test1", produces = "application/json")
或
@GetMapping(path = "test1", produces = MediaType.APPLICATION_JSON_VALUE)
由于您的回复只是一个数字,因此您可以通过指定例如text/plain
作为响应内容类型。与其他任何响应一样,由客户端来正确解释响应值。
但是,简单的1字节响应1
是有效的JSON,因此您可以保留它,也可以根据需要执行{ "value": 1 }
JSON响应。这是您的API,因此您可以确定响应格式是什么。
只要记住要对其进行记录,那么无论谁编写客户端代码,都会知道会发生什么。