我有一个使用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.com
和https://my.otherApp.com
的情况,因此我们要包括该部分。您可以这样放置@
符号吗?
答案 0 :(得分:0)
base64在附加
之前对网址进行编码