首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony - NelmioApiDocBundle:显示从类导入的参数描述

Symfony - NelmioApiDocBundle:显示从类导入的参数描述
EN

Stack Overflow用户
提问于 2016-07-29 11:00:02
回答 1查看 523关注 0票数 5

我将NelmioApiDocBundle与PHP框架Symfony3一起用于REST 。我想在/api/doc页面中显示参数的描述。如果不手动添加参数,这是可能的吗?我想从输入/输出类导入它。

我的文档是这样的:

下面是我的控制器操作(/api/user/)的@ApiDoc,它生成文档:

代码语言:javascript
复制
 * @ApiDoc(
 *     section = "user",
 *     resource = true,
 *     description = "Checks the user credentials and returns an authentication & refresh token if they are correct",
 *     input = { "class" = "AppBundle\Libraries\Core\User\LoginRequest", "name" = "" },
 *     output = { "class" = "AppBundle\Libraries\Core\User\LoginResponse", "name" = "" },
 *      statusCodes = {
 *          200 = "Returned when successful",
 *          400 = "Returned when request syntax is incorrect",
 *          404 = "Returned when the page is not found",
 *          429 = "Returned when the client sent too many requests during a time period",
 *          500 = "Returned when an internal server error occured",
 *          501 = "Returned when an unavailable request method is user (GET, POST, DELETE, PUT, ...)",
 *          503 = "Returned when the service is unavailable at the moment eg. due to maintenance or overload"
 *      },
 *
 * )

AppBundle\Libraries\Core\User\LoginRequest

代码语言:javascript
复制
class LoginRequest implements JsonSerializable
{
    /**
     * The username.
     *
     * @var string
     *
     * @Assert\NotBlank()
     * @Assert\Type("string")
     */
    public $username;

    /**
     * The password.
     *
     * @var string
     *
     * @Assert\NotBlank()
     * @Assert\Type("string")
     */
    public $password;

    /**
     * Defines whether or not to save the refresh token as cooke.
     *
     * @var bool
     *
     * @Assert\NotBlank()
     * @Assert\Type("bool")
     */
    public $rememberPassword;

    public function getUsername()
    {
        return $this->username;
    }

    public function setUsername($username)
    {
        $this->username = $username;
    }

    public function getPassword()
    {
        return $this->password;
    }

    public function setPassword($password)
    {
        $this->password = $password;
    }

    public function getRememberPassword()
    {
        return $this->rememberPassword;
    }

    public function setRememberPassword($rememberPassword)
    {
        $this->rememberPassword = $rememberPassword;
    }

    public function jsonSerialize()
    {
        return [
                'username' => $this->username,
                'password' => $this->password,
                'rememberPassword' => $this->rememberPassword
        ];
    }
}

我想用这门课的课文。用户名:“用户名”,密码:“密码”。对于rememberPassword:“定义是否将刷新令牌保存为cooke。”

谢谢你的帮助。

奥兰多问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-26 08:09:43

只有少数几个地方的NelmioApiDoc为稍后生成的视图提取数据。但是,您可以做的一件事是将描述添加到实体/模型类的表单类型中。

代码语言:javascript
复制
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('rememberPassword', CheckboxType::class, array(
        'label' => 'input.remember.password',
        // description will be passed to table in ApiDoc view
        'description' => 'Defines whether or not to save the refresh token as cookie',
    ));
}

我知道您想知道是否有方法自动地将更多的信息放到文档中,但是只有很少的方法。但是,如果您想要添加更多的信息,可以通过注释来完成,如下面的示例所示。

代码语言:javascript
复制
/**
 * Lorem ipsum dolor sit amet
 *
 * #### Example of expected response ####
 *     [
 *         {
 *             "username": "Lorem ipsum dolor sit amet",
 *             "password": "Lorem ipsum dolor sit amet",
 *             "rememberPassword": {
 *                 "1": "Lorem ipsum dolor sit amet",
 *                 "2": "Lorem ipsum dolor sit amet",
 *                 "3": "Lorem ipsum dolor sit amet"
 *             },
 *         },
 *         ...
 *     ]
 *
 * @ApiDoc(
 *     section = "user",
 *     resource = true,
 *     description = "Checks the user credentials and returns an authentication & refresh token if they are correct",
 *     input = { "class" = "AppBundle\Libraries\Core\User\LoginRequest", "name" = "" },
 *     output = { "class" = "AppBundle\Libraries\Core\User\LoginResponse", "name" = "" },
 *      statusCodes = {
 *          200 = "Returned when successful",
 *          400 = "Returned when request syntax is incorrect",
 *          404 = "Returned when the page is not found",
 *          429 = "Returned when the client sent too many requests during a time period",
 *          500 = "Returned when an internal server error occured",
 *          501 = "Returned when an unavailable request method is user (GET, POST, DELETE, PUT, ...)",
 *          503 = "Returned when the service is unavailable at the moment eg. due to maintenance or overload"
 *      },
 *
 * )
 *
 */
public function getLoginRequestAction()
{
// your code
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38657150

复制
相关文章

相似问题

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