Spring 单个请求映射中的多个资源 问题是:
我试图在控制器的单个映射中接收多个资源。我需要使用这些资源来访问MongoDB中的数据。Spring 单个请求映射中的多个资源 问题是:,spring,spring-boot,spring-mvc,Spring,Spring Boot,Spring Mvc,我试图在控制器的单个映射中接收多个资源。我需要使用这些资源来访问MongoDB中的数据。 例子: 如果访问位于:mydomain.com/rootresource/datakey1/datakey2 我想获取rootresource之后的资源,用于在MongoDB中搜索数据。rootresource之后的资源数量不是固定的 我的实际控制人: 我的实际尝试是在readByAccessAndData函数中。当我调用url../users/key1/key2时,收到的错误是: { &quo
例子: 如果访问位于:mydomain.com/rootresource/datakey1/datakey2
我想获取rootresource之后的资源,用于在MongoDB中搜索数据。rootresource之后的资源数量不是固定的
我的实际控制人:
我的实际尝试是在
readByAccessAndData
函数中。当我调用url../users/key1/key2
时,收到的错误是:
{
"timestamp": "2019-09-21T22:22:31.262+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/users/key1/key2"
}
我建议你这样做:
@GetMapping("keys:**/**")
public Document readByAccessAndData(HttpServletRequest request) {
String path = request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE).toString();
String matchingPattern = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE)
.toString();
String arguments = new AntPathMatcher().extractPathWithinPattern(bestMatchingPattern, path);
arguments = arguments.replace("keys:","");//ignore the word 'keys:'.
String[] keys = arguments.split("/");
//now use keys to do whatever you want
//return whatever you want :)
}
我希望它有用,请检查以下答案:
如果您尝试yourdomain.com/users/keys:k1/k2/k3
数组“键”将包含:
[“k1”、“k2”、“k3”]
我建议您这样做:
@GetMapping("keys:**/**")
public Document readByAccessAndData(HttpServletRequest request) {
String path = request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE).toString();
String matchingPattern = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE)
.toString();
String arguments = new AntPathMatcher().extractPathWithinPattern(bestMatchingPattern, path);
arguments = arguments.replace("keys:","");//ignore the word 'keys:'.
String[] keys = arguments.split("/");
//now use keys to do whatever you want
//return whatever you want :)
}
我希望它有用,请检查以下答案:
如果您尝试yourdomain.com/users/keys:k1/k2/k3
数组“键”将包含:
[“k1”、“k2”、“k3”]
如果资源数量将增加,那么URL的长度也将增加
在这种情况下,您可能需要考虑通过“<代码> POST < /COD>请求”发送请求正文中的查询数据。
< P>如果资源的数量将增长,那么URL的长度也将增加。在这样的情况下,您可能想考虑通过<代码> POST <代码>请求来发送请求正文中的查询数据。
因此,当您有一个请求:MyDimaNo.COM/ROOTROSRESCED/DATAKEY1/DATAKEY2时,您想查询MangoDB以获得USER1和USER2信息吗?我认为要实现这一点,您需要有一个@RequestMapping(“rootresource”),我现在在控制器中没有看到它。因此,当您有一个请求:mydomain.com/rootresource/datakey1/datakey2时,您想查询MangoDB以获得user1和user2信息吗?我认为要实现这一点,您需要一个@RequestMapping(“rootresource”),我现在在控制器中没有看到它。