首页 > 解决方案 > 如何在 REST WebService 中实现动态 URL

问题描述

我正在尝试为我的应用程序开发新的 Web 服务。
为此,我正在使用Spring REST-webservice.
在控制器端,我试图根据传递的代理获取记录列表。现在要求,代理可以通过也可以为空。如果代理为空,则应选择所有记录。否则只有那些记录被取走。

尝试使用下面的代码来实现动态性。根据搜索结果之一,但它不起作用。

@RequestMapping(value = "/staging/{agentCode: [^/]*?}" , method = 
RequestMethod.GET)

这是我现有的代码:

@Controller
@RequestMapping(value="/batches")   
public class BatchController {

    @SuppressWarnings({ "rawtypes" })
    @RequestMapping(value="/staging/{agentCode}", method = 
 RequestMethod.GET)         
    @ResponseBody
    public ResponseEntity IntmBatch(@PathVariable("agentCode") String 
   agentCode)       
   {
    //code here 
   }

案例 1:当我使用类似 . 的 URL 时,

        www.example.com/myapplication/batches/staging/1234

它工作正常并获取所需的结果。

案例2:但是,如果我没有传递任何参数说。,

    www.example.com/myapplication/batches/staging/

在哪里,我没有传递任何参数。它说我找不到映射。

你能告诉我如何在RESTGET 请求方法调用中实现这个动态 URL。

提前致谢!!

标签: javaspringrestweb-servicesspring-mvc

解决方案


@Pathvariable您可以使用@RequestParamURL 中的可选值,而不是使用。


所以你的网址会像。


案例 1www.example.com/myapplication/batches/staging?agentCode=1234 &
案例 2www.example.com/myapplication/batches/staging

希望它能解决您的问题。

 @SuppressWarnings({ "rawtypes" })
 @RequestMapping(value="/staging", method = RequestMethod.GET)         
 @ResponseBody
 public ResponseEntity IntmBatch(@RequestParam(name="agentCode",required=false) String   agentCode)       
   {
    //code here 
   }

推荐阅读