Я использую NelmioApiDocBundle вместе с фреймворком PHP Symfony3 для REST API.
Я хочу отобразить описание моих параметров на странице / api / doc.
Возможно ли это без добавления параметров вручную?
Я хочу импортировать его из класса ввода / вывода.
Вот как выглядит моя документация:
Вот мой @ApiDoc действия контроллера (/ api / user / login), который генерирует документацию:
* @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 \ Библиотеки \ Ядро \ User \ LoginRequest учебный класс:
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».
Спасибо за помощь.
Привет
Орландо
Есть только несколько мест, где NelmioApiDoc извлекает данные для последующего сгенерированного представления. Но одну вещь, которую вы можете сделать, это добавить свои описания к типу формы вашего класса сущности / модели.
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
}
Других решений пока нет …