Spring Boot не распознает контроллер с параметрами отправки запроса - PullRequest
0 голосов
/ 05 октября 2019

Пружинная загрузка не распознает мои контроллеры, только если я отправляю больше параметров по запросу. Например:

Если я отправлю нормальный GET запросить загрузку пружины распознает мой контроллер: http://localhost/idp/oauth/123/authorize

Если я отправлю GET запрос с дополнительные параметры пружинная загрузка не распознает мой контроллер: http://localhost/idp/oauth/123/authorize?scope=public_profile

Мне нужно получить запрос именно для второго примера (с параметром scope), но при загрузке пружины контроллер не распознается и перенаправляется на /error.

код:

@Controller
@RequestMapping("/idp/oauth")
public class OAuthController {

    @RequestMapping(value = "/{clientId}/authorize", method = RequestMethod.GET)
    public String authorizeGet(
            HttpServletRequest request, 
            HttpServletResponse response, 
            @PathVariable String clientId,
            Model model) {
            // ...
    }

    @RequestMapping(value = "/{clientId}/authorize", method = RequestMethod.POST)
    public String authorizePost(
            HttpServletRequest request, 
            HttpServletResponse response, 
            @PathVariable String clientId,
            Model model) {
            // ...
    }
}

Ответы [ 2 ]

2 голосов
/ 05 октября 2019

Так как вы передаете дополнительный параметр с именем "scope", Spring будет искать @RequestParam в методах. Не может найти ни одного, поэтому ошибка

. Вам нужно изменить свой метод, чтобы добавить все @RequestParam

Вы также можете добавить дополнительные поля, если они не являются обязательными, с помощью required = false

@RequestMapping(value = "/{clientId}/authorize", method = RequestMethod.GET)
public String authorizeGet(
        HttpServletRequest request, 
        HttpServletResponse response, 
        @PathVariable String clientId,
        @RequestParam(value = "scope") String scope,
        @RequestParam(required = false, value = "optionalParam") String optionalParam,
        Model model) {
        // ...
}
1 голос
/ 05 октября 2019

Вы пропустили @RequestParam в определении метода контроллера.

Подробнее на @RequestParam

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