8

アノテーションを使用して GET パラメータを取得できますが@QueryParam()、クエリ文字列データに対してのみ機能するようです: /user?id=123.

/user/123代わりにそれを好むでしょう。このために、私は@Get("/user/{id}")注釈を使用するかもしれませんが、次のような追加のメタデータがあるとは思いません@QueryParam()

name="id", requirements="\d+", default="1", description="User id"

両方の注釈を使用すると、エラーが発生します。

ParamFetcher parameter conflicts with a path parameter 'id' for route 'getone'

私の競合するdocblock:

/**
 * Finds and displays a Users entity.
 *
 * @Rest\View
 * @Rest\Get("/user/{id}")
 * @Rest\QueryParam(name="id", requirements="\d+", default="1", description="User id")
 * @ApiDoc(section="Partner Users")
 * @param int $id
 * @return array
 */

PS/user/123クエリではなく、パス()にIDが必要です。また@QueryParam()、NelmioApiDocBundleによって読み取られるため、使用する必要もあります。この問題を解決するにはどうすればよいですか?

4

2 に答える 2

19

FOSRestBundle の@Getアノテーションは FOSRestBundleのアノテーションを拡張@Routeし、それがさらに SensioFrameworkExtraBundle の を拡張します@Route

コードを見て、ドキュメントの章@Route および @Methodを参照してください。

および属性には配列が必要ですrequirementsdefaults

/**
  * @Rest\View
  * @Rest\Get("/user/{id}", requirements={"id" = "\d+"}, defaults={"id" = 1})
  * @ApiDoc(
  *  description="Returns a User Object",
  *  parameters={
  *      {"name"="id", "dataType"="integer", "required"=true, "description"="User Id"}
  *  }
  * )
  */
 public function getAction($id)
 {
    // ...
 }
于 2013-11-23T11:33:01.330 に答える