我有一个由CakePHP编写的PHP REST API,作为项目的一部分。所有API端点都作为控制器中的单独方法存在,并以JSON字符串形式接受参数和返回值。我正在尝试弄清楚如何使用phpDocumentor2文档这些方法的参数和返回类型。
例如,如果我在UsersController中有一个edit()方法,用于更新指定用户模型字段值,其框架看起来像这样(为简洁起见,我已简化了代码):
public function edit() {
//Get arguments
$args = $this->request->data['args'];
$id = $args['id'];
//Perform processing
if (!$this->User->exists($id)) {
$data = $this->createError(300);
}
else {
$this->User->id = $id;
$saveData = array();
if (isset([$args['first_name'])) {
$saveData['User']['first_name'] = $args['first_name'];
}
if (isset([$args['last_name'])) {
$saveData['User']['last_name'] = $args['last_name'];
}
$isSaved = $this->User->save($saveData);
if (count($this->User->validationErrors) > 0) {
$data = $this->createError(202, $this->User->validationErrors);
}
else {
$data = array('status' => $isSaved ? 1 : 0);
}
}
//Output data
return $data;
}
我可能会发送以下 JSON 请求,以修改用户的名字和姓氏:
{
"id": 1
"first_name": "John"
"last_name": "Doe"
}
如果 API 调用成功,该方法将返回:{
"status": 1
}
如果不成功,可能是由于数据验证失败,该方法可能会返回类似以下内容的东西:
{
"status": 0
"code": 202,
"messages": {
"first_name": {
"Numeric characters are not allowed."
}
}
}
我了解我可以使用phpDocumentor的@return和@param分别记录返回值和参数,但从文档中并未说明JSON返回。
例如,我可以将返回类型记录为
@return $value string A JSON string that contains the status code and error messages if applicable.
但我认为这样做并不合适,特别是对于涉及更复杂数据结构(类似 Twitter 的状态/用户时间线)的返回值,尤其是针对“获取”和“查看” API 方法。
另一方面,对于参数,我不确定是否正确为每个参数创建一行(考虑到所有参数都包含在一个 JSON 字符串中),例如:
@param string $id The ID of the user to be updated.
@param string $first_name optional The first name of the user.
@param string $last_name optional The last name of the user.
如果phpDocumentor无法满足您的需求,我很乐意探索其他选项 - 请提出建议!