path 参数有 %2f (/) 时用 Solon 怎么解决?

默认情况,Solon 的 Context::path() 是解码的。当请求为:/test/aa%2Fbb 时,解码后是 text/aa/bb。想要用 @Mapping 匹配并拿到路径变量:

方案1:

@Mapping("/test/**")
public void test(Context ctx){
    name = ctx.path().subString(6); //值为:aa/bb
}

方案2:

@Mapping("/test/{name}")
public void test(String name){
    name; //值为:aa%2Fbb
}

此案默认是不能匹配的,需要添加应用配置。使用后 Context::path() 是未解码的,name 需要自己解码。

server.request.useRawpath: true
posted @ 2024-07-26 08:37  带刺的坐椅  阅读(45)  评论(0编辑  收藏  举报