diff --git a/src/Metadata/UriVariablesConverterInterface.php b/src/Metadata/UriVariablesConverterInterface.php index 22ba1e7214e..344de031994 100644 --- a/src/Metadata/UriVariablesConverterInterface.php +++ b/src/Metadata/UriVariablesConverterInterface.php @@ -14,6 +14,7 @@ namespace ApiPlatform\Metadata; use ApiPlatform\Metadata\Exception\InvalidIdentifierException; +use ApiPlatform\Metadata\Exception\InvalidUriVariableException; /** * Identifier converter. @@ -29,6 +30,7 @@ interface UriVariablesConverterInterface * @param string $class The class to which the URI variables belong to * * @throws InvalidIdentifierException + * @throws InvalidUriVariableException * * @return array Array indexed by identifiers properties with their values denormalized */ diff --git a/src/Symfony/Routing/IriConverter.php b/src/Symfony/Routing/IriConverter.php index 936a0fc3135..7e6c8c0838f 100644 --- a/src/Symfony/Routing/IriConverter.php +++ b/src/Symfony/Routing/IriConverter.php @@ -16,6 +16,7 @@ use ApiPlatform\Metadata\CollectionOperationInterface; use ApiPlatform\Metadata\Exception\InvalidArgumentException; use ApiPlatform\Metadata\Exception\InvalidIdentifierException; +use ApiPlatform\Metadata\Exception\InvalidUriVariableException; use ApiPlatform\Metadata\Exception\ItemNotFoundException; use ApiPlatform\Metadata\Exception\OperationNotFoundException; use ApiPlatform\Metadata\Exception\RuntimeException; @@ -99,7 +100,7 @@ public function getResourceFromIri(string $iri, array $context = [], ?Operation try { $uriVariables = $this->getOperationUriVariables($operation, $parameters, $attributes['resource_class']); - } catch (InvalidIdentifierException $e) { + } catch (InvalidIdentifierException|InvalidUriVariableException $e) { throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); } diff --git a/tests/Functional/Issues/Issue7135Test.php b/tests/Functional/Issues/Issue7135Test.php index 22aa5c310fe..91e6c3f920e 100644 --- a/tests/Functional/Issues/Issue7135Test.php +++ b/tests/Functional/Issues/Issue7135Test.php @@ -70,7 +70,7 @@ public function testInvalidPostRequestWithIriWhenIdentifierIsUuid(): void ]); self::assertEquals(400, $response->getStatusCode()); - self::assertJsonContains(['detail' => 'Identifier "id" could not be transformed.']); + self::assertJsonContains(['detail' => 'Invalid IRI "pull-request-7135/bar/invalid-uuid".']); } public function testInvalidGetRequestWhenIdentifierIsUuid(): void