首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swagger-PHP对同一模型的多个定义(“视图”)

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

Stack Overflow用户
提问于 2017-08-06 08:24:57
回答 1查看 1.7K关注 0票数 1

我正在使用swagger-php为用Yii2构建的REST创建文档。此外,我使用的是Yii2 情景特征,这意味着我可以为多个目的重用相同的模型。与示例一样,请考虑用户类的这个最小示例:

代码语言:javascript
复制
/**
 * @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和首名
  • 定义包含所有字段的User

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

EN

回答 1

Stack Overflow用户

发布于 2018-02-28 08:54:52

检查您的答案,您也可以使用全局字段,如以下。

代码语言:javascript
复制
/**
 * @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"),
 *)
 */

谢谢,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45530070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档