#java #spring-mvc #spring-restcontroller #request-mapping
#java #spring-mvc #spring-restcontroller #сопоставление запросов
Вопрос:
Я хочу иметь класс RestController с базовым отображением «/user» (чтобы у разных функций были пути типа «/ user / add», «/ user / remove» и т.д. Или использовать POST / GET и т.д.)
Это та часть, которую я не понимаю и не могу приступить к работе:
@RestController
public class UserController {
@GetMapping("/user")
public Response login(Principal principal){
//some output
}
}
Ожидаемым поведением в этом случае было бы то, что я могу получить доступ к своим выводам в разделе «/ user». Это работает так, как ожидалось.
Теперь, если я изменю его на следующее (поскольку все функции в этом контроллере должны иметь путь, начинающийся с «/ user», это было бы чище)
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/")
public Response login(Principal principal){
//some output
}
}
Я получаю страницу с ошибкой 404 и больше не могу получить доступ к «/ user»
Все найденные мной примеры используют один и тот же синтаксис (или иногда @RequestMapping(path=»/user»), но это тоже не сработало), и я не знаю, почему это не работает.
Кто-нибудь может сказать мне, в чем моя ошибка?
Ответ №1:
Если вы используете этот код:
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/")
public Response login(Principal principal){
//some output
}
}
Тогда ваш URL-адрес должен содержать «/» в конце, например «http://localhost:8080/user /«
Я бы просто выбросил символ «/» из @GetMapping(«/») и оставил бы так:
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping
public Response login(Principal principal){
//some output
}
}
И если вам нужна карта get или post, вы можете использовать ее следующим образом:
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/add")
public SampleObj getJson() {
return new SampleObj();
}
}
Это должно сработать.