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方法中获取序列化对象,但我无法做到这一点。这并不能解决自动文档问题,但仍然非常有价值。
答案 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);