Переключить регистр или другой URL?что я должен использовать в контроллере Springboot для вызова разных сервисов - PullRequest
0 голосов
/ 25 июня 2019

Я разрабатываю загрузочное приложение Spring, в котором разные службы отвечают на один запрос.Я определяю сервисы, которые обслуживают запрос, получая serviceId из запроса.

Прямо сейчас я использую регистр Switch, чтобы определить тип запроса и соответственно вызывает сервис.

@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;
    }
}

In Above, что должноЯ использую для лучшей производительности?Оператор переключения или создание нового метода, который обслуживает каждый запрос путем добавления serviceId в URL?например, @RequestMapping(value = "/service/serviceId", method = RequestMethod.POST, consumes = { "application/json" })

1 Ответ

1 голос
/ 25 июня 2019

Во-первых, метод контроллера не должен содержать логику. Вы должны создать один метод 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 длиной в милю, то что-то не так с архитектурой вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...