我有一个基于RESTful spring的端点,可以将存储在db中的资源存储到javascript编辑器中.相关部分归结为:
@RestController
@RequestMapping(ThemeEndpoint.ENDPOINT_NAME)
public class ThemeEndpoint {
public static final String ENDPOINT_NAME = "/themes";
@RequestMapping(value="/{id}/css/{assetName:.*}", method=RequestMethod.GET)
public Asset getCssItem(
@PathVariable("id") ThemeId id,
@PathVariable("assetName") String name) {
CssThemeAsset themeAsset = themeService.getCssAsset(
id, ThemeAssetId.fromString(name));
Asset asset = new Asset();
asset.name = themeAsset.getName();
asset.text = themeAsset.getContent();
return asset;
}
Run Code Online (Sandbox Code Playgroud)
对于像这样的网址,这可以正常工作
http://localhost:8080/app-url/rest/themes/ac18a080-a2f1-11e3-84f4-600308a0bd14/css/main.less
Run Code Online (Sandbox Code Playgroud)
但是一旦我将扩展名更改为,就会失败.css
.
经过一些调试后,我非常确定如果我使用的是url,请求甚至都没有映射
http://localhost:8080/app-url/rest/themes/ac18a080-a2f1-11e3-84f4-600308a0bd14/css/main.css
Run Code Online (Sandbox Code Playgroud)
对于高日志级别,我可以看到映射是由spring捕获的:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
- Mapped "{[/themes/{id}/css/{assetName:.*}],methods=[GET],params=[],headers=[],
consumes=[],produces=[application/json],custom=[]}"
onto public xxx.endpoint.ThemeEndpoint$Asset
xxx.endpoint.ThemeEndpoint.getCssItem(
net.lacho.svc.themes.api.ThemeId,java.lang.String)
Run Code Online (Sandbox Code Playgroud)
并且使用非.css扩展名调用控制器:
Found 1 matching mapping(s) for [/themes/ac18a080-a2f1-11e3-84f4-600308a0bd14/css/main.less]
: [{[/themes/{id}/css/{assetName:.*}],methods=[GET],params=[],headers=[],
consumes=[],produces=[application/json],custom=[]}]
Run Code Online (Sandbox Code Playgroud)
但是只要我使用.css作为扩展名 - bang:
Looking up …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用基于DNS的EIP配置在aws上设置eureka集群,如https://github.com/Netflix/eureka/wiki/Configuring-Eureka-in-AWS-Cloud所述
一切似乎都有效,但尤里卡仪表板坚持认为尤里卡实例不可用.我现在想知道这是否只是一个问题(我想是这样)或者我是否遗漏了什么.
据我了解仪表板中的"不可复制副本"逻辑,这是因为eureka正在比较注册主机名和副本主机名.实例在发现客户端注册其内部VPC ip,但在查找副本对等时使用他们的EIP(奇怪的是,在eureka日志中我可以看到内部他们也在使用内部VPC ip).
问题是:这只是一些我不应该担心的化妆品问题,还是因为一些配置错误而等待介入的更大问题?如果它只是一个ui的东西:我能以某种方式"修复"吗?
编辑:
也许相关https://github.com/spring-cloud/spring-cloud-netflix/issues/102#issuecomment-74446709
我试图将spring的baseurl外化为控制器类@Controller
的静态String
成员.如果我这样做,我必须声明成员公开 - 否则它将不会被@RequestMapping
注释看到.我无法理解为什么 - 这不是课堂的注释部分吗?
有人可以解释为什么我被迫不在private
这里使用?
无效:
@Controller
@RequestMapping(PendingApprovalsController.CONTROLLER_URL)
public class PendingApprovalsController {
private static final String CONTROLLER_URL = "/some/url";
...
}
Run Code Online (Sandbox Code Playgroud)
有效:
@Controller
@RequestMapping(PendingApprovalsController.CONTROLLER_URL)
public class PendingApprovalsController {
public static final String CONTROLLER_URL = "/some/url";
...
}
Run Code Online (Sandbox Code Playgroud) annotations ×1
ip-address ×1
java ×1
slack ×1
slack-api ×1
spring ×1
spring-4 ×1
spring-cloud ×1
spring-mvc ×1