有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java修改rest服务中GET的url路径

我实现了一个简单的rest GET服务,我想修改该服务的ulr

现在的url是:http://localhost:8011/types/id?date=2019-07-30T11:35:42

我想添加一个过滤器,并在日期中添加一些括号[]

像这样:http://localhost:8011/types/id过滤器[日期]=2019-07-30T11:35:42

这是我的Get服务,在值中我有“types/id”,但我不知道如何为请求的参数添加过滤器和括号

    @RequestMapping(value = "types/id", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public ResponseEntity<?> getTicketids( @RequestParam(required = false) String date)
    {
        ...
    }

如果能给我一些建议,比如我可以改变什么或者我应该读什么,我将不胜感激


共 (3) 个答案

  1. # 1 楼答案

    为什么要将方括号添加到RequestParam?是不是因为您希望有多种过滤器,并希望区分它们?在这种情况下,您可以添加两个请求参数-

    ?filterName=date&filterValue=2019-07-30T11:35:42
    

    另外,确保这些值是url编码的,以避免字符串的任何部分使url无效

    希望,这有帮助

  2. # 2 楼答案

    不要在URL中使用方括号,我建议您传递一个您想要的过滤器列表,如下所示:

    http://localhost:8011/types/id?filters=firstValue,secondValue,thirdValue

    并按如下方式更改控制器:

    @RequestMapping(value = "types/id", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public void receiveArrayOfValues(@RequestParam String[] filters) 
    {
      // Handle values here
    }
    
  3. # 3 楼答案

    我假设您正在使用Spring定义RestController。通常,参数的工作方式如下:

    public ResponseEntity<?> getTicketids( @RequestParam(name = "filterDate", required = false) String date)
        {
            ...
        }
    

    此代码允许请求http://localhost:8011/types/id?filterDate=mydate

    但是,方括号是not allowed in an URL,因此您可能需要重新考虑该特定方法