Michael Smith
Michael Smith

Reputation: 91

Can I import required QueryString parameters as QueryString parameters rather than Template Parameters in APIM?

We are generating an OpenApi definition using Swagger/Swashbuckle. This definition is then imported into Azure API Management.

We have some querystring parameters on get requests that we have marked as required. Our validation ensures the querystring parameters are present and valid, otherwise we return a 400 Bad Request with details of which parameters are invalid/missing. The relevant part of the OpenAPI definition is below. Two querystring parameters (marked as required) and one path parameter (marked as required).

OpenAPI definition extract

My problem is the way the OpenApi definition is converted into APIM operations.

The required querystring parameters are added as template parameters and they are added to the operation url. This means if they are not provided, APIM cannot match the request to an operation and we return a 404 to the caller rather than the helpful 400 that the backend would return.

APIM operation template definition

I can't add easily add empty values into the querystring. I can't do that in the inbound policy of the operation as it doesn't match the operation. Doing it in the global inbound policy would mean I had to identify the operation myself (this is just one of many). Similarly, while I can return a 400 bad request in the onerror policy, I can't easily tell the caller what was wrong with the request.

I think it's built into the import process. When I changed the template parameters to query parameters in the portal and exported, the OpenApi definition was practically identical. When I reimported the exported template, the same thing happened. I also tried going via Wadl which looked more promising but I couldn't reimport that template.

Is there any way to move template query string parameters to be query string parameters? Any other options?

Upvotes: 4

Views: 505

Answers (1)

Rapolas
Rapolas

Reputation: 553

At the moment (since 2018) there is the bug in Azure APIM API import. Link.

It's status under review. We tried to raise this directly to Microsoft, but there was no solution provided from their side.

Upvotes: 2

Related Questions