我正在使用 swagger-php 为使用 Yii2 构建的 REST API 创建文档。此外,我正在使用 Yii2场景功能,这意味着我可以将同一模型重复用于多种用途。作为示例,请考虑以下用户类的最小示例:
/**
* @SWG\Definition(definition="UserLogin", required={"username", "login_password"}, type="object", @SWG\Xml(name="UserLogin"))
*/
class User extends ActiveRecord
{
const SCENARIO_LOGIN = 'login';
const SCENARIO_CREATE = 'create';
public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios[self::SCENARIO_LOGIN] = ['username', 'login_password'];
$scenarios[self::SCENARIO_CREATE] = ['username', 'firstname'];
return $scenarios;
}
/**
* Password
* @var string
* @SWG\Property(example="secret_password")
*/
public $login_password;
/**
* Password
* @var string
* @SWG\Property(example="admin")
*/
public $username;
/**
* firstname
* @var string
* @SWG\Property(example="SomeName")
*/
public $firstname;
}
Swagger 定义现在将包括所有字段,但只有username
并且login_password
将是必需的。相反,我需要的是与定义的场景匹配的两个不同定义。在此示例中,这将是:
- 定义
UserLogin
包括字段username
和login_password
- 定义
UserCreate
包括字段username
和名字` User
包括所有字段的定义
如何使用 swagger-php 实现这一目标?