[英]Springboot How to Return a response after a POST
我想創建一個新客戶並在創建客戶后返回客戶編號。 客戶編號必須是從50000開始的自動遞增的唯一編號。
到目前為止,我已經成功創建了一個客戶,但是我不確定應該如何生成客戶編號,將其保存到數據庫中,並在觸發POST時將其作為成功消息顯示給用戶。
json下面是所需的響應;
{
"customerNumber": "50002",
"statusMessage": "Customer Created Successfully",
}
以及來自控制器和服務的以下代碼段;
UserService.java
public void createUser(User user) {
if (user == null || user.getId() == null) {
throw new ResourceNotFoundException("Empty", "Missing Data Exception");
} else {
userRepository.save(user);
}
}
RegistrationController.java
@RequestMapping(method = RequestMethod.POST, value = "/users")
public void createUser(@RequestBody User user) {
userService.createUser(user);
}
用@RestController
注釋包含createUser
的類,或直接在createUser
方法上添加@ResponseBody
,並將其返回類型更改為Response
;
@RestController
class Controller {
@RequestMapping(method = RequestMethod.POST, value = "/users")
public Response createUser(@RequestBody User user) {
return userService.createUser(user);
}
}
假設您在UserService
的createUser
方法將返回Response
;
public Response createUser(User user) {
if (user == null || user.getId() == null) {
throw new ResourceNotFoundException("Empty", "Missing Data Exception");
} else {
User user = userRepository.save(user);
return new Response(user.getId);
}
}
由於fooRepository.save()
始終返回成功保存的實體,只要它是來自CrudRepository
的本機save
方法CrudRepository
。
id
字段將出現在save
的結果User
實體中,以返回所需的響應類型,您需要創建這樣的類,並傳輸上述id
;
class Response {
private String customerNumber;
private String statusMessage;
public Response(String id) {
this.customerNumber = id;
this.statusMessage = "Customer Created Successfully";
}
// getters, setters, etc
}
為了使您的控制器能夠返回ID,服務層應該能夠提供該信息。
換句話說,服務或存儲庫應該能夠通知您最后添加的用戶的ID。 獲取該信息后,您可以在控制器中使用它。
例如,某些存儲庫實現在保存(和提交事務)之后使用生成的ID設置實體的ID。 如果是這種情況,您可以執行以下操作:
@RequestMapping(method = RequestMethod.POST, value = "/users")
@ResponseBody
public long createUser(@RequestBody User user){
userService.createUser(user);
return user.getId();
}
注意添加了return
子句,返回類型和@ResponseBody
批注。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.