Swagger-PHP针对同一模型的多个定义(“视图”)

问题描述 投票:1回答:1

我使用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定义现在将包含所有字段,但仅需要usernamelogin_password。我需要的是两个与定义的场景匹配的不同定义。在这个例子中,这将是:

  • 定义UserLogin包括字段usernamelogin_password
  • 定义UserCreate包括字段username和firstname`
  • 定义User包括所有领域

如何使用swagger-php实现这一目标?

php swagger swagger-php
1个回答
0
投票

检查你的答案,你也可以使用像波纹管这样的全球领域。

/**
 * @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"),
 *)
 */

谢谢,

© www.soinside.com 2019 - 2024. All rights reserved.