错误请求:`url`是必需的但是丢失了

时间:2014-02-03 12:28:09

标签: php swagger restler

Hi 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;
    }

我尝试调试问题并发现在应用Validator之前将url值作为NULL接收

我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我可以看到您的方法存在一些问题

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

然后,如果你的变量将包含斜杠,理想情况下它们应该映射到查询字符串或正文,因为url路径中的斜杠将被Restler理解为许多参数

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

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