[英]Spring Data REST Controller under configured base path
我正在使用Spring Boot 1.3.1.RELEASE並嘗試創建自定義存儲庫+控制器。 我將basePath配置為/ api,並且無法弄清楚如何將自定義Controller的URI自動相對於basePath。 我缺少一些魔法嗎?
這是控制器。 我也嘗試過以下各種屬性的組合。 我留下了注釋掉的,所以你可以看到我嘗試過的東西。
@RepositoryRestController
// @Controller
@ExposesResourceFor(AnalystSummaryModel.class)
// @RequestMapping("/analystsummaries")
public class AnalystSummaryController {
@Autowired
AnalystSummaryRepository repository;
@Autowired
private AnalystSummaryResourceAssembler resourceAssembler;
@ResponseBody
@RequestMapping(method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})
public PagedResources<AnalystSummaryModel> getAnalystSummaries(
final Pageable pageable,
final PagedResourcesAssembler assembler) {
final Page<AnalystSummaryModel> analystSummaries = repository.findAll(pageable);
return assembler.toResource(analystSummaries, resourceAssembler);
}
}
我還基於另一個問題創建了ResourceProcessor。
當我查看/ api端點時,我看到以下內容:
{
"_links" : {
"self" : {
"href" : "http://localhost:8080"
},
"profile" : {
"href" : "http://localhost:8080/api/profile"
}
}
}
當我取消注釋@RequestMapping時,我得到:
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/analystsummaries"
},
"profile" : {
"href" : "http://localhost:8080/api/profile"
}
}
}
我錯過了映射是否相對於basePath,我在application.yml中設置了以下內容?
spring.data.rest.base-path:/ api
更多信息:
使用@BasePathAware實際上會導致這個控制器服務有兩個不同的URI! 它顯示在/ /和/ api / analystSummaries(因為自動復數等)。 然后在使用ControllerLinkBuilder時,它使用第一個路徑。 所以我更新的問題是:為什么這會暴露兩次? 如何消除隱式根(因為沒有@RequestMapping)並保留/ api下的那個?
擺脫spring.data.rest.base-path: /api
並添加:
server.servlet-path: /api
自Spring boot 1.4.0.RC1起,這可以通過特定配置完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.