Я разрабатываю веб-сервис с Symfony3, и я использую Swagger-PHP 2.0.6 для документирования.
Чтобы упростить это, вот что я пытаюсь достичь:
/**
* @SWG\Post(path="/user",
* tags={"user"},
* summary="Registers a new user",
* operationId="registerUserAction",
* produces={"application/json"},
* @SWG\Parameter(
* in="body",
* name="user",
* description="User to register",
* required=true,
* @SWG\Schema(ref="#/definitions/UserInput")
* ),
* @SWG\Response(
* response=200,
* description="User registered"* ),
* @SWG\Response(
* response=400,
* description="Invalid input"* )
* )
* @var UserInput $user
* @return JsonResponse
**/
public function registerUserAction(UserInput $user)
{
// Do stuff with the user model
return new JsonResponse();
}
Мой маршрут определяется так:
postUser:
path: /user
defaults: { _controller: MyBundle:User:registerUser }
methods: [POST]
Теперь вот ошибка, которую я имею от Symfony:
Контроллер «MyBundle \ Controller \ UserController :: registerUserAction ()» требует, чтобы вы указали значение для аргумента «$ user» (потому что
нет значения по умолчанию или потому что есть необязательный аргумент
после этого). (500 — внутренняя ошибка сервера)
Обходной путь должен был бы передать объект Request вместо этого к контроллеру и затем получить значения непосредственно от $ request-> request, но это не то, чего я пытаюсь достигнуть здесь.
Итак, вопрос в том, есть ли способ достичь этого? Я помню, что раньше делал это в приложении Symfony2 с Swagger 1.x
PS: я также использую Swagger-UI
Ну, для тех, кто заинтересован, мне удалось заставить его работать с помощью пользовательских ParamConverter 🙂
Других решений пока нет …