![](/img/trans.png)
[英]How to produce a json object message into kafka topic using java(spring)?
[英]How to produce json response that consumes json object using spring and Hibernate
我收到415錯誤。 這是我用於獲取json響應的映射
@RequestMapping(value="/details", method= RequestMethod.POST ,
consumes= MediaType.APPLICATION_JSON_VALUE ,
produces= MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<UserDetails> addUserDetails(@RequestBody
RegisterInput registerInput)throws ValidationException{
if(registerInput==null || registerInput.getUserName()==null){
throw new ValidationException("Input is not valid");
}
UserDetails userDetails=new UserDetails(registerInput.getUserName(),
registerInput.getFirstName(), registerInput.getLastName(), registerInput.getPassword());
userDetailsService.addUserDetails(userDetails);
return new ResponseEntity<UserDetails>(userDetails, HttpStatus.OK);
}
的pom.xml
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.4</version>
</dependency>
幫助我如何獲取json響應,因為在我的情況下顯示錯誤415。 提前致謝
其中UserDetails是POJO類,而RegisterInput是存儲輸入並返回json對象。 以下是我的pom。
您可以重構您的方法,以通過@ResponseBody
將響應直接返回到響應主體
@RequestMapping(value="/details", method= RequestMethod.POST ,
consumes= MediaType.APPLICATION_JSON_VALUE ,
produces= MediaType.APPLICATION_JSON_VALUE)
@ResponseBody public UserDetails addUserDetails(@RequestBody
RegisterInput registerInput)throws ValidationException{
if(registerInput==null || registerInput.getUserName()==null){
throw new ValidationException("Input is not valid");
}
UserDetails userDetails=new userDetails(registerInput.getUserName(),
registerInput.getFirstName(), registerInput.getLastName(), registerInput.getPassword());
userDetailsService.addUserDetails(userDetails);
return userDetails;
}
還要注意,僅當您使用spring 4時,才需要jackson 2.x依賴項
要么
僅當您使用Spring 3.xx時才可使用jackson 1.9.x
您可以使用@RestController
注釋控制器(而不是經典的@Controller
)。
這樣,您就告訴Spring將要返回的對象用作響應的主體。
確保同時發送帶有application/json
Accept
和Content-Type
標頭,並且要發送的Json格式正確。
您需要將發布的數據設為json。 我懷疑您發布數據是錯誤的。 這篇文章也是使用@Controller和@ResponseBody的Spring rest的好例子
您可以通過設置將JSON作為響應返回
ResponseEntity
作為控制器類中方法的返回類型。 您還可以通過創建Map來添加其他json鍵值對,請參見以下示例;
@DeleteMapping("/delete/{id}")
public ResponseEntity<Object> deleteDepartment(@PathVariable Long id) throws NotFoundException {
Optional<Department> department = this.departmentService.findADepartment(id);
if (department == null)
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
Map<String, String> stringStringMap = new HashMap<>();
if (departmentService.deleteADepartment(id)) {
stringStringMap.put("status", "success");
stringStringMap.put("message", "successfully deleted");
stringStringMap.put("code", "200");
return ResponseEntity.status(HttpStatus.OK).
body(stringStringMap);
} else {
stringStringMap.put("status", "failed");
stringStringMap.put("message", "not deleted");
stringStringMap.put("code", "404");
return ResponseEntity.status(HttpStatus.NOT_FOUND).
body(stringStringMap);
}
}
這里的輸入URL是
http://localhost:8080/department/delete/7
輸出響應是
{
"code": "200",
"message": "successfully deleted",
"status": "success"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.