7

I have added my REST api service in Azure API Management. I have followed all the steps given in this link Azure APIM. API works fine in local. It also works when accessed through published URL.

I have added OAuth2.0 security as well which is passing through fine.

My issue is When i try to access the operation through APIM published URL, the service is giving response 200 with empty content.

Can Someone please help.

swathi
  • 119
  • 2
  • 11
  • Do you see forward-request policy statement in efective policy for that operation? – Vitaliy Kurokhtin Nov 06 '16 at 09:32
  • I checked, I have added only validate jwt token policy. – swathi Nov 06 '16 at 22:57
  • I followed the document and the API works well for me. What's the exact URL you were requesting? Did this API work when you test on the development portal? – Fei Xue Nov 08 '16 at 11:51
  • No, even from developer portal I am getting same empty response. I am assuming that my request is not reaching API from APIM at all. – swathi Nov 08 '16 at 13:36
  • If you go to management portal, policies, select your product, API and operation and click Show effective policy button, what do you see there? – Vitaliy Kurokhtin Nov 09 '16 at 20:09
  • when you try from developer portal check under Response content there will be Ocp-Apim-Trace-Location there will be a URL which gives you complete trace which should give you clues if it made a backend api call or not and possibly what went wrong and where. – Gopi Kolla Nov 15 '16 at 05:59
  • As @VitaliyKurokhtin was trying clarify, this problem occurs when people unintentionally delete the top level policy and remove the main `forward-request` policy that applies to all operations on all apis.. – Darrel Miller Nov 24 '16 at 14:58
  • Thanks Darrel. When I created new one it worked fine. – swathi Nov 28 '16 at 11:04
  • @swathi Excellent. I created an answer, if you could mark it as accepted that may help other people who run into the same issue. – Darrel Miller Nov 29 '16 at 15:10

3 Answers3

13

This problem occurs when people unintentionally delete the top level policy and remove the main forward-request policy that applies to all operations on all apis. Simply click the Add policy button to re-add the default policy at the top level scope.

Darrel Miller
  • 139,164
  • 32
  • 194
  • 243
  • Have to say that this should be more clearly flagged, especially with the move to the new Portal. Just wasted a couple of hours assuming it was me, only to finally resort to SO... – Simon W Oct 24 '17 at 08:09
  • Future guidance: Go to SO first :-) I will forward the feedback though. – Darrel Miller Oct 24 '17 at 13:25
3

Old question, but I'm posting because I had a similar issue (empty response) caused by a different issue:

I was getting empty responses as I had expressions in a policy that read the response. By default, reading the response clears it (presumably because its a stream underneath).

Found some good docs here: https://learn.microsoft.com/en-us/azure/api-management/api-management-transformation-policies#SetBody

I fixed this by specifying "preserve content" when reading the response:

JObject responseJobj = null;
if (context.Response.Body != null) 
{ 
    responseJobj = context.Response.Body.As<JObject>(preserveContent: true); 
}
brendanrichards
  • 309
  • 2
  • 6
0

As mentioned, you have deleted some policy rules from all APIs. to fix this,

  1. navigate to the API tab in the Azure portal
  2. click on All APIs
  3. click on edit inbound policies
  4. add forward-request policy inside the backend enter image description here
Eric Aya
  • 69,473
  • 35
  • 181
  • 253
Hiran
  • 1,102
  • 11
  • 18