Spring url末尾的请求映射模式*/
我正在尝试用Spring控制器映射url。 我想在url的末尾添加变量PremissionID,例如,我想映射: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 =
.../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}