【问题标题】:Bad Request: `url` is required but missing错误请求:`url` 是必需的,但缺少
【发布时间】:2014-02-03 12:28:08
【问题描述】:

嗨,Restler/Swagger 朋友,

当我尝试按如下方式发布网址(例如 /home/ahmad/)时遇到问题:

{
  "error": {
    "code": 400,
    "message": "Bad Request: `url` is required but missing."
  },
  "debug": {
    "source": "Validator.php:26 at validate stage",
    "stages": {
      "success": [
        "get",
        "route",
        "negotiate"
      ],
      "failure": [
        "validate",
        "message"
      ]
    }
  }
}

我的测试代码是:

/**
     * POST url
     *
     * @param string $url {@from url} url for test
     * 
     * @return string
     */
    function post_url($url) { 
        return $url;
    }

我尝试调试问题,发现在应用验证器之前 url 值被接收为 NULL

我该如何解决这个问题?

【问题讨论】:

  • 你的 $url 里有什么?
  • 显示更多代码,例如调用函数的位置和方式以及变量中包含哪些数据
  • $url 是一个路径,我将它的值从 index.html 传递为 /home/ahmad/
  • 在没有额外信息或代码的情况下减少线索

标签: php swagger restler


【解决方案1】:

我发现您的方法存在一些问题

首先,如果要将参数映射到 url,则必须使用 {@from path} 而不是 {@from url}

那么,如果您的变量将包含斜杠,则它们应该理想地映射到查询字符串或正文,因为 url 路径中的斜杠将被 Restler 理解为许多参数

如果你必须接受它的部分url,你可以使用如下所示的通配符路由

/**
 * POST url
 * 
 * @return string
 * 
 * @url POST url/*
 */
function postUrl() { 
    return implode(',', func_get_args());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    相关资源
    最近更新 更多