Spring 单个请求映射中的多个资源 问题是:

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

我试图在控制器的单个映射中接收多个资源。我需要使用这些资源来访问MongoDB中的数据。

例子: 如果访问位于: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”),我现在在控制器中没有看到它。