【问题标题】:Slash in json encoded variable breaks slim api routejson 编码变量中的斜线打破了苗条的 api 路线
【发布时间】:2018-10-05 00:20:05
【问题描述】:

我在 slim api 中创建了一个这样的路由:

$app->put('/user/:one', function ($one) {

我知道我使用它作为获取创建了错误,但我无法更改应用程序,因为它是实时的。 所以我必须找到一种方法来改变它,以便当 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 视为一个变量???还是逃脱斜线?

【问题讨论】:

  • 您的应用需要在 UI 端解决这个问题。 Slim 正在做它应该做的事情。
  • 我会在更新中,但现在一个丑陋的黑客会做

标签: php json routes slim


【解决方案1】:

您可以使用通配符路由来捕获整个查询字符串...

$app->put('/user/:one+', function ($one) {

【讨论】:

  • 是的,我已经准备好解决了,但就是这样,如果有多个斜杠,它将使第一个 var 成为一个数组,所以我对其进行检查,如果是,我循环遍历值并粘贴它一起变成一个字符串:),无论如何,谢谢
【解决方案2】:

如果您使用的是 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 3 - Slash as a part of route parameter”找到了这个解决方案

【讨论】:

    猜你喜欢
    • 2019-12-11
    • 1970-01-01
    • 2016-05-16
    • 2016-07-01
    • 2011-02-28
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多