![](/img/trans.png)
[英]How to pass the list of integers as json data to spring boot rest API?
[英]How to format returned json in Spring Boot REST API?
我使用 Spring 引導創建了以下 REST API。
@RestController
public class PersonController {
@Autowired
private PersonRepository PersonRepository;
@PostMapping(value="/Person", produces = "application/json")
public ResponseEntity<Person> addPerson(@RequestBody Person Person){
Person newPerson = PersonRepository.save(Person);
return new ResponseEntity<Person>(newPerson, HttpStatus.OK) ;
}
}
在 Postman I select 中:
發布 > http://localhost:8080/person > json
然后在正文字段中,我放置以下 json 並點擊發送:
{"id":"", "name":"john", "age":"40", "email":"test@test.com"}
這是我得到的回報:
{
"name": "john",
"age": 40,
"email": "test@test.com",
"_links": {
"self": {
"href": "http://localhost:8080/person/10"
},
"person": {
"href": "http://localhost:8080/person/10"
}
}
}
但是,我想讓 json 以這種其他格式返回:
{
"id": 10,
"name": "john",
"age": 40,
"email": "test@test.com"
}
怎么做?
看起來您也在使用 SpringDataRest,它根據您的實體公開 _links 等。 我猜您的請求中調用了來自 SpringDataRest 的 controller,而不是您的自定義端點。 嘗試在您的 controller 方法中記錄一些內容,以確保它被實際調用。 如果您的服務的另一部分不需要 SpringDataRest,則應刪除依賴項。
我剛剛發現了問題。
在 controller 中,代碼為:
@PostMapping(value="/person"....
在 postman 我打電話給:
http://localhost:8080/persons
(以字母 s 結尾)
結果它從未進入 controller 方法。
當我從 postman 調用中刪除 s 時,它可以正常工作並按照我想要的方式返回 json。
現在...
有趣的是,當使用字母 s 調用時,它確實保存到數據庫並返回 json,即使映射不正確。
所以我決定在調試模式下運行(使用不正確的映射)並注意到它沒有進入方法。
那很奇怪。 它如何正確保存並返回 json?
然后我決定注釋掉所有方法並再次在 postman 上運行調用。
它再次將 json 保存到數據庫並以第一種格式返回 json。
所以似乎這是在幕后以某種方式完成的,肯定不是通過我創建的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.