我正在使用swagger-php为使用Yii2构建的REST API创建文档。此外,我使用Yii2 scenario feature,这意味着我可以为同一个模型重复使用相同的模型。例如,请考虑用户类的这个最小示例:
/**
* @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
和firstname` User
包括所有字段如何使用swagger-php实现这一目标?
答案 0 :(得分:0)
检查您的答案,您也可以使用像bellow这样的全球字段。
/**
* @SWG\Definition(
* definition="UserLogin",
* required={"username", "login_password"},
* type="object",
* @SWG\Xml(name="UserLogin"),
* @SWG\Property(type="string", property="username", description="User name"),
* @SWG\Property(type="string", property="login_password", description="Login password"),
* ),
* @SWG\Definition(
* definition="UserCreate",
* required={"username", "login_password"},
* type="object",
* @SWG\Xml(name="UserLogin"),
* @SWG\Property(type="string", property="username", description="User name"),
* @SWG\Property(type="string", property="firstname", description="First name"),
* ),
* @SWG\Definition(
* definition="User",
* required={"username", "login_password"},
* type="object",
* @SWG\Xml(name="UserLogin"),
* @SWG\Property(type="string", property="login_password", description="Login password"),
* @SWG\Property(type="string", property="username", description="User name"),
* @SWG\Property(type="string", property="firstname", description="First name"),
*)
*/
谢谢,