繁体   English   中英

在 Spring Controller 中返回原始类型/包装器的最佳方法是什么?

[英]What is the best way to return primitive types/wrappers in Spring Controller?

当我像这样从 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作为响应内容类型来决定它就是那个数字,而不是 JSON。 与任何其他响应一样,正确解释响应值取决于客户端。

但是,普通的 1 字节响应1有效的 JSON,因此您可以保留它,或者您可以根据需要执行{ "value": 1 } JSON 响应。 这是您的 API,因此您可以决定响应格式是什么。

只需记住记录它,这样编写客户端代码的人就会知道会发生什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM