Я создаю небольшой API в Symfony и использую платформу Api.
В /src/BooksBundle/Resources/config/api_resources/resources.xml
Я установил путь к:
<collectionOperations>
<collectionOperation name="get">
<attribute name="method">GET</attribute>
<attribute name="path">/{shop}/books</attribute>
<attribute name="normalization_context">
<attribute name="groups">
<attribute>books_list</attribute>
<attribute>list</attribute>
</attribute>
</attribute>
</collectionOperation>
</collectionOperations>
В swagger.yml
я установил путь и параметр
paths:
/api/{shop}/books:
get:
tags:
- Book
operationId: getBookCollection
produces:
- application/json
- application/ld+json
- text/html
summary: Retrieves the collection of Book resources.
responses:
'200':
description: Book collection response
schema:
type: array
items:
$ref: '#/definitions/Book-book_list'
'401':
description: Unauthorized
parameters:
- name: title
in: query
required: false
type: string
- name: shop
in: path
required: true
type: string
Мой маршрут, например: 127.0.0.1/api/shopName/books?title=sometitle
и в ответ я получаю эту ошибку: Unable to generate an IRI for "BookBundle\Entity\Book".
Я исследовал исключение, и сообщение:
Some mandatory parameters are missing ("shop") to generate a URL for route "api_books_get_collection".
Поэтому мне нужен способ отправки параметров через путь в платформе API, потому что по какой-то причине это не работает.
Просто для информации, почему я думаю, что это проблема конфигурации. Мой параметр Shop in entity Book, есть getter и setter, и если я установлю фиксированное значение в entity, удалим параметр из конфигурации и маршрута, url 127.0.0.1/api/books?title=sometitle
будет работать отлично, и я получу полный ответ Hydra Json.