json 编码变量中的斜线破坏了 slim api 路由
Slash in json encoded variable breaks slim api route
我在 slim api 中创建了一条路线,如下所示:
$app->put('/user/:one', function ($one) {
我知道我使用它作为 get 创建了 put 错误,但我无法更改应用程序,因为它是实时的。
所以我必须找到一种方法来改变它,以便它在 json 编码变量包含斜线时起作用。
当 json 变量中的一个字段包含斜杠时,路由认为正在声明另一个变量。
在这个 url 中,密码包含一个斜杠,因此破坏了我的路线:
http://someapi.nl/someappApi/api.php/user/%7B%22uuid%22:%2267b80bda2ab6f83d%22,%22username%22:%22bladude%22,%22screen_state%22:%22Aan%20het%20werk%22,%22name%22:%22bladude%22,%22last_name%22:%22asdf%22,%22email%22:%22someexample@live.nl%22,%22password%22:%22bie/rtje/%22%7D
有没有办法告诉 slim api 它应该将整个 url 视为一个变量???还是逃避斜线?
您可以使用通配符路由来捕获整个查询字符串...
$app->put('/user/:one+', function ($one) {
如果您使用的是 SLIM 3
$app->get('/hello[/{params:.*}]', function ($request, $response, $args) {
$params = explode('/', $request->getAttribute('params'));
// $params is an array of all the optional segments
});
我在“”
找到了这个解决方案
我在 slim api 中创建了一条路线,如下所示:
$app->put('/user/:one', function ($one) {
我知道我使用它作为 get 创建了 put 错误,但我无法更改应用程序,因为它是实时的。 所以我必须找到一种方法来改变它,以便它在 json 编码变量包含斜线时起作用。 当 json 变量中的一个字段包含斜杠时,路由认为正在声明另一个变量。 在这个 url 中,密码包含一个斜杠,因此破坏了我的路线:
http://someapi.nl/someappApi/api.php/user/%7B%22uuid%22:%2267b80bda2ab6f83d%22,%22username%22:%22bladude%22,%22screen_state%22:%22Aan%20het%20werk%22,%22name%22:%22bladude%22,%22last_name%22:%22asdf%22,%22email%22:%22someexample@live.nl%22,%22password%22:%22bie/rtje/%22%7D
有没有办法告诉 slim api 它应该将整个 url 视为一个变量???还是逃避斜线?
您可以使用通配符路由来捕获整个查询字符串...
$app->put('/user/:one+', function ($one) {
如果您使用的是 SLIM 3
$app->get('/hello[/{params:.*}]', function ($request, $response, $args) {
$params = explode('/', $request->getAttribute('params'));
// $params is an array of all the optional segments
});
我在“