Является ли хорошей практикой прямой вызов конечной точки (метода) REST из другой конечной точки REST того же контроллера? - PullRequest
1 голос
/ 24 марта 2019

У меня есть один класс контроллера Spring REST, который имеет несколько конечных точек. Является ли хорошей практикой прямой вызов метода конечной точки из другой конечной точки?

Я гуглил это, но не нашел ответа на вопрос, что является хорошей практикой для этого.

@RestController
public class DataContoller {

    @GetMapping("/dataA/{param}")
    public ResponseEntity getDataA(@PathVariable String param) {
     // logic to fetch data A
     return ResponseEntity.ok("A");  
    }

    @GetMapping("/dataB/{param}")
    public ResponseEntity getDataB(@PathVariable String param) {
     ResponseEntity response = getDataA("test");
     String result = response.getBody();
     return ResponseEntity.ok("B" + result);  
    }

}

В принципе это работает, поскольку это просто вызов метода из другого метода, но я хотел бы знать, является ли это хорошей практикой или нет. И если это не очень хорошая практика, то каков идеальный способ сделать это? Одним из вариантов является использование RestTemplate. Это единственный вариант?

1 Ответ

3 голосов
/ 24 марта 2019

Это не так уж плохо, но и не хорошо.

Проблема в том, что прямой вызов getDataA("test") пропускает все, что обычно предшествует методу этого контроллера: проверки безопасности, проверка, фильтрация, ведение журнала, отображение,или любой другой вид манипулирования данными.

Это создает нестабильность: вы не уверены, какие данные поступают и откуда они на самом деле.Это было из моего внутреннего метода, или это был HTTP-вызов?

Очень простой совет - иметь сервисный метод getDataA и вызывать его из обоих методов контроллера.Однако, как вы уже заметили, он не полностью заменяет HTTP-запрос.

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