当我像这样从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,因此您可以确定响应格式是什么。

只要记住要对其进行记录,那么无论谁编写客户端代码,都将知道会发生什么。

07-24 09:38
查看更多