Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Azure APIM "rewrite-uri" policy - How to remove the URL suffix?

I have a requirement where I have the Azure APIM public facing URL - https://api.example.com/api/v1/storenumber/ordernumber

And

Back-end service URL (Notice - There is no URL path suffix here) - https://back-end.service.com

So I need to remove "/api/v1/storenumber/ordernumber" in APIM.

How to achieve this in Azure APIM policies?

Thanks, Aneesh.

like image 763
Aneesh Ananthakrishnan Avatar asked Jan 22 '19 18:01

Aneesh Ananthakrishnan


People also ask

What is Web service URL in Apim?

The web service URL is the URL where our backend API is hosted , If we will not add the web service URL we will get an error as http 500.

How do I purge API management service in Azure?

Purge a soft-deleted instanceApiManagement/locations/deletedservices/delete, Microsoft. ApiManagement/deletedservices/read. This will permanently delete your API Management instance from Azure.

What is OCP Apim trace?

On the Message tab, the ocp-apim-trace-location header shows the location of the trace data stored in Azure blob storage. If needed, go to this location to retrieve the trace. Trace data can be accessed for up to 24 hours.


1 Answers

Let's say you have APIM service with hostname my-service.azure-api.net. An API in APIM service with URL suffix my-api, and a backend URI of https://my-backend.com. And an operation in this API with URI template of my/uri/template.

So for an incoming call to

https://my-service.azure-api.net/my-api/my/uri/template

without any additional configuration APIM service will make a call to

https://my-backend.com/my/uri/template

Because by default APIM service replaces in source URI scheme+hostname+api suffix with backend URI defined for an API in question.

In most simple case when your API has only one operation you could set API suffix to api/v1/storenumber/ordernumber and operation template to /. That would result in public facing URI of https://api.example.com/api/v1/storenumber/ordernumber

and backend URI for this operation of

https://back-end.service.com/

Of course this is approach is harder to use when you have multiple operations in API. In that case you'll need to use policies: https://docs.microsoft.com/en-us/azure/api-management/api-management-transformation-policies#RewriteURL. For that you can set your API suffix and operation URI template to anything, but add this policy into operation's inbound section:

<rewrite-uri template="/" />

what rewrite-uri policy does is overrides operation URI template for backend request.

like image 172
Vitaliy Kurokhtin Avatar answered Sep 18 '22 14:09

Vitaliy Kurokhtin