【问题标题】:restler 3 api explorer incorrect param typerestler 3 api explorer 参数类型不正确
【发布时间】:2013-02-27 17:55:55
【问题描述】:

首先感谢这个简单的工具!

我遇到了以下问题。在我的服务类中,我有一个看起来像这样的函数(部分):

/**
 * get merkmale from device id
 *
 * one could get merkmale from given serial id by passing var id
 * to this function and will get back one to n results ORDER BY ORDNUNG ASC
 * in JSON format
 *
 * @url GET /:id/merkmale
 * @param int $id contains the device id
 * @throws 400 No value given for id
 * @return json
 *
 */
function getmerkmale ($id) {....}

问题是,如果我调用 api explorer 并且 phpdocs 一切正常,但是 @param 类型 (int) 始终显示为字符串值。 如果我通过在字段中输入所需的值来尝试它,它会显示 $id 的值错误。 我可以输入 int 或 string 都失败。如果我在浏览器中调用它,一切正常。

我在 Safari/Firefox 上使用 Restler 3 和 apiExplorer。

希望有人能提供帮助。

谢谢 英格

编辑: @Lucarest 我已经尝试了实际的 git 克隆,但没有成功

也许问题出在 index.html 中?

<?php
use Luracast\Restler\Restler;
require_once 'vendor/restler.php';
require_once 'database/config.php';
require_once 'database/DB.php';
require_once 'controller/Say.php';
require_once 'controller/Authors.php';
require_once 'controller/kunde/kunde.php';
require_once 'controller/device/device.php';
require_once 'controller/messprotokoll/messprotokoll.php';

$r = new Restler();
$r->addAPIClass('Luracast\Restler\Resources'); //this creates resources.json at API Root
$r->addAPIClass('Say');
$r->addAPIClass('Authors');
$r->addAPIClass('kunde');
$r->addAPIClass('device');
$r->addAPIClass('messprotokoll');
//... add more api model if needed
$r->handle();

我已将所有 APIClasses 放入子文件夹中。我没有通过传递让它工作 AddAPIClass 的 url 作为第二个参数,所以我需要需要的类。 会不会是这个问题?

感谢您的帮助 英格

【问题讨论】:

  • 你能在github master分支上试试最新版本吗?以及示例附带的资源管理器
  • 我也尝试了您的完整示例,没有任何修改。 Safari 和 Firefox 在资源管理器中既不显示也不显示 int 值:(

标签: restler


【解决方案1】:

当您使用 addAPIClass 添加命名空间类时,请确保您将斜杠转义,如下所示

<?php
use Luracast\Restler\Restler;

require_once 'vendor/restler.php';
require_once 'database/config.php';
require_once 'database/DB.php';
require_once 'controller/Say.php';
require_once 'controller/Authors.php';
require_once 'controller/kunde/kunde.php';
require_once 'controller/device/device.php';
require_once 'controller/messprotokoll/messprotokoll.php';

$r = new Restler();
$r->addAPIClass('Luracast\\Restler\\Resources'); //note the double slash for escaping
$r->addAPIClass('Say');
$r->addAPIClass('Authors');
$r->addAPIClass('kunde');
$r->addAPIClass('device');
$r->addAPIClass('messprotokoll');
//... add more api model if needed
$r->handle();

如果你坚持到 PSR-0,你就不需要每个类都需要 require_once

【讨论】:

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