切换大小写还是使用其他网址?我应该在Springboot控制器中使用什么来调用不同的服务

ketankatariya:

我正在开发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;
    }
}

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

Artiow:

首先,控制器方法不得包含逻辑。您必须创建单个方法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));
}

我还想说,如果您被迫使用一英里长switch,那么您的应用程序体系结构就出问题了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Angular的新功能:这应该在服务中使用还是可以保留在控制器中?

在Android中使用枚举切换大小写

Laravel-如果我将变量传递给控制器并保存在数据库中,如何在javascript中使用切换大小写

控制器位于应用程序层还是基础架构层中?我是否应该在Clean Architecture中使用控制器?

我什么时候应该在 Symfony 4.4 控制器中使用拒绝访问功能?

我应该在Elixir Phoenix的控制器或模型中使用Ecto.Repo吗?

什么时候应该在ASP.NET MVC中使用异步控制器?

我应该在mongodb的同一数据库中使用不同的数据库还是在不同的集合中使用不同的集合?

为什么在Microsoft Edge中使用javascript切换大小写无法在字符串上使用?

我应该在MongoDB中使用不同的数据库还是仅使用不同的集合来存储用户信息和数据库的其余部分?

我可以在带有切换大小写的C#中使用正则表达式吗?

我们应该在 SpringBoot 中将 @Scheduled 与控制器方法(如 @PostMaping)一起使用吗?

.Net Core Web API每个控制器使用不同的JSON大小写

我应该在可能不使用类的控制器中使用Lazy <T>吗?

使用SwiftLint切换大小写格式问题

尝试使用ASCII值切换大小写

我的表单需要其他数据,我应该在哪里放置路由和控制器方法来获取它?

Python:如何使用函数调用切换大小写以显示 Pygame

无法在大小写切换语句中使用if更改if语句

在Ruby中使用正则表达式切换大小写?

如何在Java中使用切换大小写来使字符等价?

在 C++ 菜单中使用 While 循环切换大小写

我应该在restful api中使用不同的状态代码,而不是200吗?

我们如何使用字符串切换大小写

使用Scala模式匹配而不是Java切换大小写的优点是什么?

我应该在POSIX shell中使用“ test”还是“ [”“]”?

我应该在JSFiddle中使用:after还是:: after?

我应该在“ this”中使用bind还是关闭别名?

我应该在Angular的可重用组件中使用EventEmitter还是共享服务?