2017-04-21 22 views
0

我有春天启动的应用程序及以下控制器变迁春季数据REST的基本路径不涉及定制控制器

@Controller 
@RequestMapping("/orders/{id}") 
@ExposesResourceFor(Payment.class) 
@RequiredArgsConstructor 
public class PaymentController { 
    ... 
} 

当我改变

spring.data.rest.base-path=/api 

然后,控制器不带/ 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

这财产是春数据休息控制器RepositoryRestHandlerAdapter。你的控制器是一个标准的Spring MVC控制器。看到这里进一步讨论:http://stackoverflow.com/questions/32927937/how-to-set-base-url-for-rest-in-spring-boot –

回答

2

为了使您的自定义控制器知道的基本路径来配置你有@RepositoryRestController代替@Controller

1

和一些惊人之语注释它们:

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

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

首先由RequestMappingHandlerMapping没有基本路径,然后通过与基本路径