Skip to content

Commit 1659296

Browse files
committed
Added BodyListener format fallback in case no Content-Type is provided, defaults to %fos_rest.routing.loader.default_format%
1 parent 7650034 commit 1659296

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

EventListener/BodyListener.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class BodyListener
2828
{
2929
private $decoderProvider;
3030
private $throwExceptionOnUnsupportedContentType;
31+
private $defaultFormat;
3132

3233
/**
3334
* @var ArrayNormalizerInterface
@@ -56,6 +57,16 @@ public function setArrayNormalizer(ArrayNormalizerInterface $arrayNormalizer)
5657
$this->arrayNormalizer = $arrayNormalizer;
5758
}
5859

60+
/**
61+
* Sets the fallback format if there's no Content-Type in the request.
62+
*
63+
* @param string $defaultFormat
64+
*/
65+
public function setDefaultFormat($defaultFormat)
66+
{
67+
$this->defaultFormat = $defaultFormat;
68+
}
69+
5970
/**
6071
* Core request handler.
6172
*
@@ -78,6 +89,8 @@ public function onKernelRequest(GetResponseEvent $event)
7889
? $request->getRequestFormat()
7990
: $request->getFormat($contentType);
8091

92+
$format = $format ?: $this->defaultFormat;
93+
8194
$content = $request->getContent();
8295

8396
if (!$this->decoderProvider->supports($format)) {

Resources/config/body_listener.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636
<tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" priority="10" />
3737
<argument type="service" id="fos_rest.decoder_provider" />
3838
<argument>%fos_rest.throw_exception_on_unsupported_content_type%</argument>
39+
<call method="setDefaultFormat">
40+
<argument>%fos_rest.routing.loader.default_format%</argument>
41+
</call>
3942
</service>
4043

4144
</services>

0 commit comments

Comments
 (0)