gpt4 book ai didi

java - Spring Boot 如何在 POST 后返回响应

转载 作者:行者123 更新时间:2023-12-03 05:36:54 26 4
gpt4 key购买 nike

我想创建一个新客户并在创建客户后返回客户编号。客户编号必须是从 50000 开始自动递增的唯一编号。

到目前为止,我已经成功创建了一个客户,但我不确定应该如何生成客户编号、将其保存到数据库并在触发 POST 时将其作为成功消息显示给用户。

下面的 json 是所需的响应;

{
"customerNumber": "50002",
"statusMessage": "Customer Created Successfully",
}

以及来自 Controller 和服务的以下代码片段;

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 的 native save 方法即可。

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
}

关于java - Spring Boot 如何在 POST 后返回响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48179716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com