更改Spring Data REST基本路径并不涉及自定义控制器

时间:2017-04-21 12:58:18

标签: spring-mvc spring-data-rest

我有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}")这是不可取的,因为我将配置硬编码为代码。

这个问题有解决办法吗? 感谢

2 个答案:

答案 0 :(得分:2)

要让您的自定义控制器了解配置的基本路径,您必须使用@RepositoryRestController而不是@Controller

对其进行注释

答案 1 :(得分:1)

还有一些评论:

如果使用@RepositoryRestController注释,请不要使用类级别的@RequestMapping注释。

否则你的控制器方法可以映射两次!

首先通过RequestMappingHandlerMapping没有basePath,然后是RepositoryRestHandlerAdapter和basePath