path 引數有 %2f (/) 時用 Solon 怎麼解決?

带刺的坐椅發表於2024-07-26

預設情況,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

相關文章