使用 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 :)