作为项目的一部分,我有一个用 CakePHP 编写的 PHP REST API。所有 API 端点作为单独的方法存在于控制器中,并接受参数并返回 JSON 字符串中的值。我试图弄清楚我应该如何记录这些方法 phpDocumentor2 的参数和返回类型。
例如,如果我在 UsersController 中有一个 edit() 方法更新 User 模型的指定字段,它的骨架如下所示(为了简洁起见,我简化了代码):
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 的状态/用户时间线),特别是对于“get”和“view”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 不能满足这个需求,我愿意探索其他选项 - 只是建议!