Symfony - NelmioApiDocBundle:显示从 class 导入的参数说明
Symfony - NelmioApiDocBundle: Show parameter description imported from class
我将 NelmioApiDocBundle 与 PHP 框架 Symfony3 一起用于 REST API.
我想在 /api/doc 页面中显示我的参数说明。
如果不手动添加参数,这可能吗?
我想从 input/output class.
导入它
我的文档是这样的:
这是生成文档的控制器操作 (/api/user/login) 的 @ApiDoc:
* @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 class:
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
];
}
}
我想使用这个 class 的描述,例如。用户名:"The username.",密码:"The password." 和记住密码:"Defines whether or not to save the refresh token as cooke.".
感谢您的帮助。
您好
奥兰多
NelmioApiDoc 为以后生成的视图提取数据的地方很少。但是您可以做的一件事是将您的描述添加到 entity/model class.
的表单类型中
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',
));
}
我知道您想知道是否有办法自动将更多信息添加到文档中,但只有几种。但是如果你想添加额外的信息,你可以通过评论来完成,如下例所示。
/**
* 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
}
我将 NelmioApiDocBundle 与 PHP 框架 Symfony3 一起用于 REST API. 我想在 /api/doc 页面中显示我的参数说明。 如果不手动添加参数,这可能吗? 我想从 input/output class.
导入它我的文档是这样的:
这是生成文档的控制器操作 (/api/user/login) 的 @ApiDoc:
* @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 class:
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
];
}
}
我想使用这个 class 的描述,例如。用户名:"The username.",密码:"The password." 和记住密码:"Defines whether or not to save the refresh token as cooke.".
感谢您的帮助。
您好 奥兰多
NelmioApiDoc 为以后生成的视图提取数据的地方很少。但是您可以做的一件事是将您的描述添加到 entity/model class.
的表单类型中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',
));
}
我知道您想知道是否有办法自动将更多信息添加到文档中,但只有几种。但是如果你想添加额外的信息,你可以通过评论来完成,如下例所示。
/**
* 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
}