我正在使用swagger-php为用Yii2构建的REST创建文档。此外,我使用的是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_passwordUserCreate,包括字段username和首名User如何使用swagger-php实现这一点?
发布于 2018-02-28 08:54:52
检查您的答案,您也可以使用全局字段,如以下。
/**
* @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"),
*)
*/谢谢,
https://stackoverflow.com/questions/45530070
复制相似问题