При написании REST API на Spring Boot решил порпробовать для всех path
сделать префикс /rest
при помощи аннотации, но почему-то не работает, причем старый url теперь тоже не отвечает, значит аннотация все-таки влияет но что-то идет не так. Помогите пожалуйста это исправить, и скажите в чем моя ошибка.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@RestController
@RequestMapping("/rest")
public @interface RestApi {
}
@Configuration
public class ApiConfig {
@Bean
public WebMvcRegistrationsAdapter webMvcRegistrationsHandlerMapping() {
return new WebMvcRegistrationsAdapter() {
@Override
public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
return new RequestMappingHandlerMapping() {
private final static String API_BASE_PATH = "/rest";
@Override
protected void registerHandlerMethod(Object handler, Method method, RequestMappingInfo mapping) {
Class<?> beanType = method.getDeclaringClass();
if (AnnotationUtils.findAnnotation(beanType, RestApi.class) != null) {
PatternsRequestCondition apiPattern = new PatternsRequestCondition(API_BASE_PATH)
.combine(mapping.getPatternsCondition());
mapping = new RequestMappingInfo(mapping.getName(), apiPattern,
mapping.getMethodsCondition(), mapping.getParamsCondition(),
mapping.getHeadersCondition(), mapping.getConsumesCondition(),
mapping.getProducesCondition(), mapping.getCustomCondition());
}
super.registerHandlerMethod(handler, method, mapping);
}
};
}
};
}
}
Вашей аннотации RestApi достаточно. Если её вешать над контроллерами вот так:
@RestApi
public class FooController {
@RequestMapping("/foo")
@ResponseBody
String get() {
return "OK";
}
}
Если порт на котором развёртывается ваше приложение 8080 то при обращении на http://localhost:8080/rest/foo должно вернуться OK.
Не понятно зачем вам нужен ApiConfig. Скорее всего проблема в нём.
Ещё совет: при запуске приложения в логах можно попробовать посмотреть пути на которые вешаются ваши контроллеры.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Всем привет! Есть Restful вебсервис написанный с Spring Boot, который отдает entity с полем LocalDate с контроллераИ есть клиент для него на Андроиде, но проблема...
Пытаюсь подключится к удаленной базе данных на сервереВыдает ошибку:
Вопрос: как можно в jocl предать массив в виде аргумента?
Нужно заменить поменять местами глиф символа А и БЧто бы когда вводился символ А выводился символ Б и наоборот