ApiDoc & Route annotation were conflicted

The generated error was “Unable to guess how to get a Doctrine instance from the request information.”.

I haven’t checked deeper in Doctrine (I know it was coming from the DoctrineParamConverter).

Anyway, I check for FosRest possiblity to add extra format without allowing them for every route (like it was done in the first place).

I finally found a way but it then seems all request goes to the FormatListener of FosRest so I needed to add a custom rules to match all request to be sure we don’t get  a 406 error from FosRest.

Should be ok now …
This commit is contained in:
Jeremy Benoist 2016-10-15 16:46:42 +02:00
parent 6147736868
commit f1c3f68e90
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
4 changed files with 29 additions and 9 deletions

View file

@ -112,12 +112,26 @@ swiftmailer:
fos_rest:
param_fetcher_listener: true
body_listener: true
format_listener: true
view:
mime_types:
csv:
- 'text/csv'
- 'text/plain'
pdf:
- 'application/pdf'
epub:
- 'application/epub+zip'
mobi:
- 'application/x-mobipocket-ebook'
view_response_listener: 'force'
formats:
xml: true
json: true
txt: true
csv: true
pdf: true
epub: true
mobi: true
templating_formats:
html: true
force_redirects:
@ -126,6 +140,15 @@ fos_rest:
default_engine: twig
routing_loader:
default_format: json
format_listener:
enabled: true
rules:
- { path: "^/api/entries/([0-9]+)/export.(.*)", priorities: ['epub', 'mobi', 'pdf', 'txt', 'csv'], fallback_format: false, prefer_extension: false }
- { path: "^/api", priorities: ['json', 'xml'], fallback_format: false, prefer_extension: false }
- { path: "^/annotations", priorities: ['json', 'xml'], fallback_format: false, prefer_extension: false }
# for an unknown reason, EACH REQUEST goes to FOS\RestBundle\EventListener\FormatListener
# so we need to add custom rule for custom api export but also for all other routes of the application...
- { path: '^/', priorities: ['text/html', '*/*'], fallback_format: html, prefer_extension: false }
nelmio_api_doc:
sandbox:

View file

@ -1,4 +1,3 @@
Rest_Wallabag:
type : rest
resource: "@WallabagApiBundle/Resources/config/routing_rest.yml"

View file

@ -54,8 +54,8 @@
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "^2.0",
"nelmio/cors-bundle": "~1.4.0",
"friendsofsymfony/rest-bundle": "~1.4",
"jms/serializer-bundle": "~1.0",
"friendsofsymfony/rest-bundle": "~2.1",
"jms/serializer-bundle": "~1.1",
"nelmio/api-doc-bundle": "~2.7",
"mgargano/simplehtmldom": "~1.5",
"tecnickcom/tcpdf": "~6.2",

View file

@ -167,8 +167,6 @@ class WallabagRestController extends FOSRestController
* }
* )
*
* @Route(requirements={"_format"="epub|mobi|pdf|txt|csv"})
*
* @return Response
*/
public function getEntryExportAction(Entry $entry, Request $request)