簡體   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