使用Swagger2&检索POST参数Symfony3

时间:2016-02-20 17:31:33

标签: php symfony swagger swagger-ui swagger-2.0

我正在使用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

1 个答案:

答案 0 :(得分:0)

对于那些感兴趣的人,我设法使用自定义ParamConverter:)