我有Spring Boot应用程序和以下控制器
@Controller
@RequestMapping("/orders/{id}")
@ExposesResourceFor(Payment.class)
@RequiredArgsConstructor
public class PaymentController {
...
}
当我改变
spring.data.rest.base-path=/api
然后Controller对没有/ api基本路径的请求做出反应
curl -i -X PUT -H "Content-Type:application/json" -d "{ \"number\": \"1234123412341234\" }" http://localhost:8080/orders/1/payment
即。不是http://localhost:8080/ api / orders / 1 / payment
如果我想拥有/ api基本路径,这意味着将控制器映射更新为@RequestMapping("/api/orders/{id}")
这是不可取的,因为我将配置硬编码为代码。
这个问题有解决办法吗? 感谢
答案 0 :(得分:2)
要让您的自定义控制器了解配置的基本路径,您必须使用@RepositoryRestController
而不是@Controller
答案 1 :(得分:1)
还有一些评论:
如果使用@RepositoryRestController注释,请不要使用类级别的@RequestMapping注释。
否则你的控制器方法可以映射两次!
首先通过RequestMappingHandlerMapping没有basePath,然后是RepositoryRestHandlerAdapter和basePath