Restler:复杂对象类型作为参数

时间:2013-05-10 09:04:49

标签: php restler swagger

Hello Restler朋友,

我目前正在尝试切换到Restler作为我们的主要Rest-Framework。真正推动我决定的是宽松的合规性。我觉得为一个增长的系统提供一个很好的自动生成文档非常重要。

所以,我的问题是我似乎无法找到一种方法来使用“复杂对象”作为swagger中指定的post参数:https://github.com/wordnik/swagger-core/wiki/Parameters

当然,您可以从“post assoc array”中检索所有内容,然后针对对象结构进行验证,但这不会被记录,客户端也不会知道他期望的结构。因此,我必须写一个规范。手工......

示例:

/**
 * Create a new Account, based on the structure of the Account Object
 *
 * @param Account $account {@from body}
 *
 * @return string
 *
 */
protected function post(Account $account){...}

这只是作为一个未定义的“Object”放在resource.json中,而不是作为一个链接到Account对象的“复杂类型”(顺便说一下,这对返回的对象非常有用)

Resource.json

"parameters": [
    {
    "name": "REQUEST_BODY",
    "description": "Paste JSON data here with the following property.<hr/><mark>account</mark> <i>(required)</i>: add <mark>@param {type} $account {comment}</mark> to describe here",
    "paramType": "body",
    "required": true,
    "allowMultiple": false,
    "dataType": "Object",
    "defaultValue": "{\n    \"account\": \"\"\n}"
    }
    ],

我是否遗漏了某些内容或该功能未实现?

先谢谢你帮助我!

更新:我设法直接从post方法中获取序列化对象,但我无法做到这一点。这并不能解决自动文档问题,但仍然非常有价值。

2 个答案:

答案 0 :(得分:1)

Restler 3 RC4昨天发布了自定义类参数功能

阅读http://restler3.luracast.com/param.html#type以获取示例和测试代码

答案 1 :(得分:0)

@igoru 对于你在评论中提出的问题 在函数文档之前使用PHPDOC

 * @param {type} $variable {comment} **{@from body}**

**{@from body}**将使请求正文发送变量。

如果你想从php发送它,请使用以下命令:

<?php
$data = array("name" => "Another", "email" => "another@email.com");
$data_string = json_encode($data);

$ch = curl_init("http://restler3.luracast.com/examples/_007_crud/index.php/authors");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
);

$result = curl_exec($ch);
echo($result);