On this page
Reference
Default Types
- Since 1.1.0.
When you raise your own exceptions implementing Mezzio\ProblemDetails\Exception\ProblemDetailsExceptionInterface
you will always be in control of all the properties returned as part of the
response payload, including the status
, type
, title
, detail
, etc.
items.
However, there are some use cases in which this library will have to infer some of those values.
The main situations in which this can happen are:
- When an exception not implementing
ProblemDetailsExceptionInterface
is captured by theProblemDetailsMiddleware
. - When the
ProblemDetailsNotFoundHandler
is executed.
In these two cases, the title
and type
properties will be inferred from the
status code, which will usually be 500
in the first case and 404
in the
second one.
To be more precise, the
ProblemDetailsMiddleware
will use the exception's error code whendebug
istrue
, and500
otherwise.
Because of this, in any of those cases, you will end up with values like
https://httpstatus.es/404
or https://httpstatus.es/500
for the type
property.
Configuring custom default types
Since the type
property will usually be used by API consumers to uniquely
identify an error, you might want to be able to provide your own custom values
for the type
property.
In order to do that, this library lets you configure the default type
value to
be used for every status code when some of the cases listed above happens.
return [
'problem-details' => [
'default_types_map' => [
404 => 'https://example.com/problem-details/error/not-found',
500 => 'https://example.com/problem-details/error/internal-server-error',
],
],
];
If this configuration is found, it will be consumed by the
ProblemDetailsResponseFactoryFactory
and your custom values will be used when the type
was not explicitly provided.