Geo*_*ios 6 java spring spring-data-rest spring-hateoas spring-boot
我正在使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
我还基于另一个问题创建了ResourceProcessor .
当我查看/ api端点时,我看到以下内容:
{
"_links" : {
"self" : {
"href" : "http://localhost:8080"
},
"profile" : {
"href" : "http://localhost:8080/api/profile"
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我取消注释@RequestMapping时,我得到:
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/analystsummaries"
},
"profile" : {
"href" : "http://localhost:8080/api/profile"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我错过了映射是否相对于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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1474 次 |
最近记录: |