使用 Swagger2 和 Symfony3 检索 POST 参数
Retrieve POST param with Swagger2 & Symfony3
我正在使用 Symfony3 开发 Web 服务,我正在使用 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 得到的错误:
Controller "MyBundle\Controller\UserController::registerUserAction()"
requires that you provide a value for the "$user" argument (because
there is no default value or because there is a non optional argument
after this one). (500 Internal Server Error)
解决方法是将 Request 对象传递给控制器,然后直接从 $request->request 获取值,但这不是我在这里想要实现的。
那么问题来了,有什么办法可以实现吗?我记得我以前用 Swagger 1.x
在 Symfony2 应用程序上这样做过
PS:我也在用Swagger-UI
对于那些感兴趣的人,我设法使用自定义 ParamConverter :)
我正在使用 Symfony3 开发 Web 服务,我正在使用 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 得到的错误:
Controller "MyBundle\Controller\UserController::registerUserAction()" requires that you provide a value for the "$user" argument (because there is no default value or because there is a non optional argument after this one). (500 Internal Server Error)
解决方法是将 Request 对象传递给控制器,然后直接从 $request->request 获取值,但这不是我在这里想要实现的。
那么问题来了,有什么办法可以实现吗?我记得我以前用 Swagger 1.x
在 Symfony2 应用程序上这样做过PS:我也在用Swagger-UI
对于那些感兴趣的人,我设法使用自定义 ParamConverter :)