Платформа API — используйте определенный поисковый фильтр для определенного пути

Для одного и того же объекта в моем примере я создал 2 разных пути для входящих и исходящих ссылок. В документации (Swagger) я хочу использовать в качестве фильтра только href для входящих и page для исходящих. На данный момент все поля отображаются для двух путей. Я использую Symfony 4.4 и платформу Api 2.4. Спасибо за вашу помощь.

/**
 * @ApiResource(
 *     shortName="page_links",
 *     collectionOperations={
 *          "inbound"={
 *              "path"="/page/links/inbound",
 *              "method"="GET",
 *          },
 *          "outbound"={
 *              "path"="/page/links/outbound",
 *              "method"="GET",
 *          }
 *     },
 *     itemOperations={"get"={"method"="GET", "path"="/page/links/{id}"}},
 * )
 * @ApiFilter(SearchFilter::class, properties={"href": "partial", "uid": "partial", "page": "partial"})
 * @ORM\Table("res_link_pages")
 * @ORM\Entity(repositoryClass="App\Repository\ResLinkPagesRepository")
 */

person Falco    schedule 10.06.2020    source источник


Ответы (1)


Я нашел решение, добавив некоторые атрибуты openapi_context

/**
 * @ApiResource(
 *     shortName="page_links",
 *     collectionOperations={
 *          "inbound"={
 *              "path"="/page/links/inbound",
 *              "method"="GET",
 *              "openapi_context" = {
 *                  "parameters" = {
 *                      {
 *                          "name" = "page",
 *                          "type" = "string",
 *                          "in" = "query"
 *                      }
 *                  }
 *              }
 *          },
 *          "outbound"={
 *              "path"="/page/links/outbound",
 *              "method"="GET",
 *              "openapi_context" = {
 *                  "parameters" = {
 *                      {
 *                          "name" = "href",
 *                          "type" = "string",
 *                          "in" = "query"
 *                      }
 *                  }
 *              }
 *          }
 *     },
 *     itemOperations={"get"={"method"="GET", "path"="/page/links/{id}"}},
 * )
 * @ApiFilter(SearchFilter::class, properties={"href": "partial", "uid": "partial", "page": "partial"})
 * @ORM\Table("res_link_pages")
 * @ORM\Entity(repositoryClass="App\Repository\ResLinkPagesRepository")
 */
person Falco    schedule 11.06.2020