gpt4 book ai didi

java - 切换大小写或不同的 URL?我应该在 Springboot Controller 中使用什么来调用不同的服务

转载 作者:行者123 更新时间:2023-12-02 09:44:39 25 4
gpt4 key购买 nike

我正在开发 Spring boot 应用程序,其中有不同的服务响应单个请求。我通过从请求中获取 serviceId 来识别为请求提供服务的服务。

现在我正在使用 Switch case 来识别请求类型并相应地调用服务。

@RestController
@RequestMapping("/app")
public class ApiController{
@Autowired
Service service;

@RequestMapping(value = "/service", method = RequestMethod.POST, consumes = { "application/json" })
public ResponseEntity<ResponseModel> processAPIRequest(@RequestBody ApiRequest req){
String serviceId = req.getServiceId();
ResponseModel resp = new ResponseModel();
switch (serviceId.trim()) {
case "SER0001":
resp = service.getDetails01(req);
break;
case "SER0002":
resp = service.getDetails03(req);
break;




case "SER0030":
resp = service.getDetails30(req);
break;
return resp;
}
}

在上面我应该使用什么来获得更好的性能? switch case 语句或创建新方法通过在 url 中添加 serviceId 来服务每个请求?例如@RequestMapping(value = "/service/serviceId", method = RequestMethod.POST, Consumers = { "application/json"})

最佳答案

首先, Controller 方法不能包含逻辑。您必须创建单个方法 Service#getDetails

其次,我建议您这样做(例如返回 HTTP 200):

@PostMapping(value = "/service/{serviceId}")
public ResponseEntity<ResponseModel> processAPIRequest(@PathVariable int serviceId, @RequestBody ApiRequest req) {

return ResponseEntity.status(HttpStatus.OK).body(service.getDetails(serviceId, req));
}

我还想说,如果您被迫使用一英里长的开关,那么您的应用程序的架构就会出现问题。

关于java - 切换大小写或不同的 URL?我应该在 Springboot Controller 中使用什么来调用不同的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56754182/

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