我有一个应用程序,它将Java Spring与REST端点结合使用。我们拥有的一个端点是GET调用,它在数据库中搜索URL,因此spring代码将类似于:
@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进行搜索,他们得到的网址将如下所示: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
的情况,因此我们希望包含该部分。你可以把@
符号放成那样吗?
发布于 2018-10-19 05:04:42
base64在追加前对url进行编码
https://stackoverflow.com/questions/52882321
复制相似问题