9

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.

9
  • Do you see forward-request policy statement in efective policy for that operation? Commented Nov 6, 2016 at 9:32
  • I checked, I have added only validate jwt token policy. Commented Nov 6, 2016 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? Commented Nov 8, 2016 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. Commented Nov 8, 2016 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? Commented Nov 9, 2016 at 20:09

5 Answers 5

15

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.

Sign up to request clarification or add additional context in comments.

2 Comments

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...
Future guidance: Go to SO first :-) I will forward the feedback though.
5

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); 
}

Comments

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

Comments

0

If you add this:

<backend>
    <forward-request />
</backend>

It will resolve the issue. This part will forward the request to the URL you set as backend service URL.

Comments

0

In my case get request working fine but post request retrun 200 but empty response.

so if you have same case then please add cors policy in API management

<policies>
    <inbound>
        <!-- base: Begin Global scope -->
        <cors allow-credentials="true">
            <allowed-origins>
                <origin>http://localhost:4200/</origin>
                <origin>https://developer.mydomain.com</origin>
            </allowed-origins>
            <allowed-methods preflight-result-max-age="300">
                <method>*</method>
            </allowed-methods>
            <allowed-headers>
                <header>*</header>
            </allowed-headers>
            <expose-headers>
                <header>*</header>
            </expose-headers>
        </cors>
        <!-- base: End Global scope -->
    </inbound>
</policies>

More info:

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.