Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring url末尾的请求映射模式*/_Spring_Url_Spring Mvc_Pattern Matching - Fatal编程技术网

Spring url末尾的请求映射模式*/

Spring url末尾的请求映射模式*/,spring,url,spring-mvc,pattern-matching,Spring,Url,Spring Mvc,Pattern Matching,我正在尝试用Spring控制器映射url。 我想在url的末尾添加变量PremissionID,例如,我想映射: .../product/all/petitionId/{petitionId} 以及 .../product/productId/{productId}/clientId/{clientId}/petitionId/{petitionId} 为此,我尝试在控制器头中使用RequestMapping,如下所示 @Controller @RequestMapping(value =

我正在尝试用Spring控制器映射url。 我想在url的末尾添加变量PremissionID,例如,我想映射:

.../product/all/petitionId/{petitionId}
以及

.../product/productId/{productId}/clientId/{clientId}/petitionId/{petitionId}
为此,我尝试在控制器头中使用RequestMapping,如下所示

@Controller
@RequestMapping(value = "product/*/petitionId/{petitionId}")
public class ProductController
在我想要映射的方法声明中

@RequestMapping(value = "*/all/*", method = RequestMethod.GET)
public @ResponseBody
String getProducts(@PathVariable Long petitionId) 
我也试过用斜线和不用斜线加一、二和没有星号。。。与404错误结果相同。 我想提出的要求是

http://192.168.1.27:9999/middleware/product/all/petitionId/20
我知道我可能在每个方法中都有完整的URL映射,但这不是最优雅的方式。
有人知道如何解决这个问题吗?

老实说,你的URL看起来有点复杂

您是否考虑过其他URL方案,例如针对所有产品的申请:

GET http://192.168.1.27:9999/middleware/petitions/20/products 
或按id、客户id和申请id列出的产品:

GET http://192.168.1.27:9999/middleware/products?clientId=10&productId=10&petitionId=20

按函数使用注释
@RequestMapping
。 您可以在类中使用它,但只能在每个函数的requestMapping中编写更少的代码。将控制器所有功能的共同点放在类中

例如:

@Controller
@RequestMapping(value = "/products")
public class ProductController {
    ...

    @RequestMapping(value = "", method = RequestMethod.GET)
    public @ResponseBody
    String getProducts() { ... }

    @RequestMapping(value = "/{productId}", method = RequestMethod.GET)
    public @ResponseBody
    String getProductsById(@PathVariable Long productId) { ... }

    @RequestMapping(value = "/{productId}/clients/{clientId}/petitions/{petitionId}", method = RequestMethod.GET)
    public @ResponseBody
    String getPetition(@PathVariable Long productId, @PathVariable Long clientId, @PathVariable Long petitionId) { ... }
}
您将得到以下映射:

/products
/products/{productId}
/products/{productId}/clients/{clientId}/petitions/{petitionId}