Java Spring-使用@编码URL端点处的字符

时间:2018-10-18 20:47:58

标签: java spring

我有一个使用Java Spring和REST端点的应用程序。我们拥有的端点之一是GET调用,该调用在我们的数据库中搜索URL,因此弹簧代码如下所示:

@GET
@Path("/search/{type}/{value}")
@Produces(MediaType.APPLICATION_JSON)
@ValidateRequest
@ApiOperation(value = "searchByTypeValue", nickname = "searchByTypeValue")
@ApiResponses(value = {
        @ApiResponse(code = 200, message = "Success", response = returnObject.class),
        @ApiResponse(code = 401, message = "Unauthorized"),
        @ApiResponse(code = 403, message = "Forbidden"),
        @ApiResponse(code = 404, message = "Not Found"),
        @ApiResponse(code = 500, message = "Failure")})

public @ResponseBody
    @Valid ArrayList<ReturnObjectVO> searchByTypeValue(
            @PathParam("type") String searchType,
            @PathParam("value") String searchValue){

        //do stuff
      }

这是基于他们要搜索的内容的通用搜索,因此他们选择搜索类型,然后输入要搜索的内容。因此,如果他们想按ID进行搜索,则其生成的URL类似于:https://my.app.com/rest/search/Id/26816931。现在,我们也让用户通过URL搜索,包括https://。为了解决端点中有/的问题,我们在将/编码为@之前将其发送到服务器,因此,如果用户通过http://my.otherApp.com搜索,URL将看起来像https://my.app.com/rest/search/appURL/http:@@my.otherApp.com。但是,这导致了400错误,而且我知道它来自http://,因为如果删除了该错误,我们便可以根据匹配算法进行搜索。但是,我们可能会遇到http://my.otherApp.comhttps://my.otherApp.com的情况,因此我们要包括该部分。您可以这样放置@符号吗?

1 个答案:

答案 0 :(得分:0)

base64在附加

之前对网址进行编码