我正在使用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()" 要求您为" $ user"提供价值。争论(因为 没有默认值,或者因为存在非可选参数 在此之后)。 (500内部服务器错误)
解决方法是将Request对象传递给控制器,然后直接从$ request->请求获取值,但这不是我想要在这里实现的。
所以问题是,有没有办法实现这个目标?我记得我以前在使用Swagger 1.x
的Symfony2应用程序上做过PS:我也在使用Swagger-UI