在Spring数据REST中,我使用资源处理器
创建自定义链接:
@Component
public class ServiceInstanceProcessor
implements ResourceProcessor<Resource<ServiceInstance>> {
@Override
public Resource<ServiceInstance> process(Resource<ServiceInstance> resource) {
Long id = resource.getContent().getId();
ServiceInstanceController controller =
methodOn(ServiceInstanceController.class);
resource.add(linkTo(controller.getNodeSummary(id))
.withRel("nodeSummary"));
resource.add(linkTo(controller.getHealthBreakdown(id))
.withRel("healthBreakdown"));
resource.add(linkTo(controller.getRotationBreakdown(id))
.withRel("rotationBreakdown"));
return resource;
}
}
然而,即使我已将控制器标记为@BasePathAwareController
,并且即使默认链接包含基本路径,生成的链接也不包括基本路径:
{
...
"_links" : {
"self" : {
"href" : "http://localhost:8080/api/serviceInstances/101"
},
"serviceInstance" : {
"href" : "http://localhost:8080/api/serviceInstances/101{?projection}",
"templated" : true
},
"nodeSummary" : {
"href" : "http://localhost:8080/serviceInstances/101/nodeSummary"
},
"healthBreakdown" : {
"href" : "http://localhost:8080/serviceInstances/101/healthBreakdown"
},
"rotationBreakdown" : {
"href" : "http://localhost:8080/serviceInstances/101/rotationBreakdown"
},
...
}
}
我还需要做什么才能让基本路径出现在链接中?
我认为这与错误控制器有关,LinkBuilder没有考虑Spring Data REST的基本路径,并且自定义控制器更改的基本路径没有显示在HAL中
作为解决方法,我接下来要做:
@Autowired
private final RepositoryRestConfiguration config;
private Link fixLinkSelf(Object invocationValue) {
return fixLinkTo(invocationValue).withSelfRel();
}
@SneakyThrows
private Link fixLinkTo(Object invocationValue) {
UriComponentsBuilder uriComponentsBuilder = linkTo(invocationValue).toUriComponentsBuilder();
URL url = new URL(uriComponentsBuilder.toUriString());
uriComponentsBuilder.replacePath(config.getBasePath() + url.getPath());
return new Link(uriComponentsBuilder.toUriString());
}
用法与< code>linkTo相同:
resources.add(fixLinkSelf(methodOn(VoteController.class).history()));
resources.add(fixLinkTo(methodOn(VoteController.class).current()).withRel("current"));
基于当前addPath请求的简单情况的其他解决方法:
new Link(ServletUriComponentsBuilder.fromCurrentRequest().path(addPath).build().toUriString())
我使用的是Spring Boot 1.3.3和swagger springmvc:1.0.2。我正在将应用程序的基本路径设置为“/”。而斯威格正在 http://localhost:9000/swagger/index.html 我需要更改它,但将应用程序的根目录保留为“/”。我需要写一条规则,比如: 如果有人打http://localhost:9000/SOMETHING/swagger/ind
默认情况下,vue-loader 使用 css-loader 和 Vue 模版编译器自动处理样式和模版文件。在编译过程中,所有的资源路径例如 <img src="...">、background: url(...) 和 @import 会作为模块依赖。 例如,url(./image.png) 会被转换为 require('./image.png'),而 <img src="../image.png
当 Vue Loader 编译单文件组件中的 <template> 块时,它也会将所有遇到的资源 URL 转换为 webpack 模块请求。 例如,下面的模板代码片段: <img src="../image.png"> 将会被编译成为: createElement('img', { attrs: { src: require('../image.png') // 现在这是一个模块的请
我正在通过数据库开发一组rest资源,并使用Spring Data Rest公开核心CRUD功能,以直接与存储库交互。 在我的简化示例中,我有以下用户: 和用户自己的项目: 直接与存储库交互是可以的,所以对于创建用户(其他简单实体),问题来自于创建项目。项目有大量基于用户表单输入的服务器派生字段,所以我编写了一个自定义控制器来生成它们并保存结果。为了持久化结果,我需要将项目与其拥有的用户相关联。我
问题内容: 我目前正在开发一个Spring Batch,它可以在第一步中将Excel(.xsls)文件转换为CSV,然后读取CSV,对其进行处理并将其数据存储在数据库中。第一步效果很好。批处理在第二步停止,并发出以下警告:。在我的代码之后: spring-config.xml: 第1步-convertXLSXtoCVS.java: 我在属性文件中提到了文件路径,如下所示: 当我在阅读器定义中从sp
本文将介绍 Weex 中 uri(url) 的用法。包括使用图像、字体等资源,处理相对路径以及如何访问本地及打包的资源文件。 Schemes 本地资源 Weex SDK 提供 local scheme 来访问打包在应用程序中的资源,此 scheme 无法在 H5 环境下使用。目前,开发者可以在 image 组件和字体文件中使用本地资源。 在 iOS 中,Weex 会在 bundle resourc