当我像这样从Spring Controller返回Integer或其他包装器时:
@GetMapping(path = "test1")
public Integer test1() {
return 1;
}
对用户的响应具有以下主体:
1
这不是有效的JSON。是否有任何实践应如何返回这些值?令人担心的是,我希望所有API返回有效的JSON。我创建了一个返回的包装器:
{
"value": 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,因此您可以确定响应格式是什么。只要记住要对其进行记录,那么无论谁编写客户端代码,都将知道会发生什么。