Difference in request body in aws api gateway test and curl












1














I'm trying to add a POST HTTP method to my AWS API Gateway. I'm using SAM framework with Python.



I find that there is a difference in the "body" of the response when it is generated from my desktop (curl or postman) and the AWS API Gateway 'TEST'



Right now, the "POST" command only prints the 'event' object received by the lambda_handler. (I'm using an object to store the event as you can see below)



def add(self):
response = {
"statusCode": 200,
"body": json.dumps(self._event)
}
return response


When I'm using the 'TEST' option of the API Gateway console, with the input:



{"username":"xyz","password":"xyz"}


I receive the following output:



{
"body": "{"username":"xyz","password":"xyz"}",
<the rest of the response>
}


However, when I'm sending the curl (or postman) request:



curl --header "Content-Type: application/json"   --request POST   --data '{"username":"xyz","password":"xyz"}' <aws api gateway link>


I get the following response:



{
"body": "eyJ1c2VybmFtZSI6Inh5eiIsInBhc3N3b3JkIjoieHl6In0="
<the rest of the response>
}


Why do you think there is a difference between the two tests?










share|improve this question



























    1














    I'm trying to add a POST HTTP method to my AWS API Gateway. I'm using SAM framework with Python.



    I find that there is a difference in the "body" of the response when it is generated from my desktop (curl or postman) and the AWS API Gateway 'TEST'



    Right now, the "POST" command only prints the 'event' object received by the lambda_handler. (I'm using an object to store the event as you can see below)



    def add(self):
    response = {
    "statusCode": 200,
    "body": json.dumps(self._event)
    }
    return response


    When I'm using the 'TEST' option of the API Gateway console, with the input:



    {"username":"xyz","password":"xyz"}


    I receive the following output:



    {
    "body": "{"username":"xyz","password":"xyz"}",
    <the rest of the response>
    }


    However, when I'm sending the curl (or postman) request:



    curl --header "Content-Type: application/json"   --request POST   --data '{"username":"xyz","password":"xyz"}' <aws api gateway link>


    I get the following response:



    {
    "body": "eyJ1c2VybmFtZSI6Inh5eiIsInBhc3N3b3JkIjoieHl6In0="
    <the rest of the response>
    }


    Why do you think there is a difference between the two tests?










    share|improve this question

























      1












      1








      1







      I'm trying to add a POST HTTP method to my AWS API Gateway. I'm using SAM framework with Python.



      I find that there is a difference in the "body" of the response when it is generated from my desktop (curl or postman) and the AWS API Gateway 'TEST'



      Right now, the "POST" command only prints the 'event' object received by the lambda_handler. (I'm using an object to store the event as you can see below)



      def add(self):
      response = {
      "statusCode": 200,
      "body": json.dumps(self._event)
      }
      return response


      When I'm using the 'TEST' option of the API Gateway console, with the input:



      {"username":"xyz","password":"xyz"}


      I receive the following output:



      {
      "body": "{"username":"xyz","password":"xyz"}",
      <the rest of the response>
      }


      However, when I'm sending the curl (or postman) request:



      curl --header "Content-Type: application/json"   --request POST   --data '{"username":"xyz","password":"xyz"}' <aws api gateway link>


      I get the following response:



      {
      "body": "eyJ1c2VybmFtZSI6Inh5eiIsInBhc3N3b3JkIjoieHl6In0="
      <the rest of the response>
      }


      Why do you think there is a difference between the two tests?










      share|improve this question













      I'm trying to add a POST HTTP method to my AWS API Gateway. I'm using SAM framework with Python.



      I find that there is a difference in the "body" of the response when it is generated from my desktop (curl or postman) and the AWS API Gateway 'TEST'



      Right now, the "POST" command only prints the 'event' object received by the lambda_handler. (I'm using an object to store the event as you can see below)



      def add(self):
      response = {
      "statusCode": 200,
      "body": json.dumps(self._event)
      }
      return response


      When I'm using the 'TEST' option of the API Gateway console, with the input:



      {"username":"xyz","password":"xyz"}


      I receive the following output:



      {
      "body": "{"username":"xyz","password":"xyz"}",
      <the rest of the response>
      }


      However, when I'm sending the curl (or postman) request:



      curl --header "Content-Type: application/json"   --request POST   --data '{"username":"xyz","password":"xyz"}' <aws api gateway link>


      I get the following response:



      {
      "body": "eyJ1c2VybmFtZSI6Inh5eiIsInBhc3N3b3JkIjoieHl6In0="
      <the rest of the response>
      }


      Why do you think there is a difference between the two tests?







      amazon-web-services aws-lambda aws-api-gateway aws-serverless






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 12 at 4:42









      nerez

      325212




      325212
























          1 Answer
          1






          active

          oldest

          votes


















          2














          Curl and Postman seem to be automatically Base64 encoding your Authentication credentials.



          The responses are the same. The latter response is a Base64-encoded token of the first response.






          share|improve this answer

















          • 1




            Great Catch! I added x-amazon-apigateway-binary-media-types: */* to the yml file which apparently caused to be decoded. Thanks! It is a little misleading that the 'API Gateway' test doesn't present the body decoded as well
            – nerez
            Nov 12 at 7:07













          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53256069%2fdifference-in-request-body-in-aws-api-gateway-test-and-curl%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2














          Curl and Postman seem to be automatically Base64 encoding your Authentication credentials.



          The responses are the same. The latter response is a Base64-encoded token of the first response.






          share|improve this answer

















          • 1




            Great Catch! I added x-amazon-apigateway-binary-media-types: */* to the yml file which apparently caused to be decoded. Thanks! It is a little misleading that the 'API Gateway' test doesn't present the body decoded as well
            – nerez
            Nov 12 at 7:07


















          2














          Curl and Postman seem to be automatically Base64 encoding your Authentication credentials.



          The responses are the same. The latter response is a Base64-encoded token of the first response.






          share|improve this answer

















          • 1




            Great Catch! I added x-amazon-apigateway-binary-media-types: */* to the yml file which apparently caused to be decoded. Thanks! It is a little misleading that the 'API Gateway' test doesn't present the body decoded as well
            – nerez
            Nov 12 at 7:07
















          2












          2








          2






          Curl and Postman seem to be automatically Base64 encoding your Authentication credentials.



          The responses are the same. The latter response is a Base64-encoded token of the first response.






          share|improve this answer












          Curl and Postman seem to be automatically Base64 encoding your Authentication credentials.



          The responses are the same. The latter response is a Base64-encoded token of the first response.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 12 at 5:39









          twils0

          721314




          721314








          • 1




            Great Catch! I added x-amazon-apigateway-binary-media-types: */* to the yml file which apparently caused to be decoded. Thanks! It is a little misleading that the 'API Gateway' test doesn't present the body decoded as well
            – nerez
            Nov 12 at 7:07
















          • 1




            Great Catch! I added x-amazon-apigateway-binary-media-types: */* to the yml file which apparently caused to be decoded. Thanks! It is a little misleading that the 'API Gateway' test doesn't present the body decoded as well
            – nerez
            Nov 12 at 7:07










          1




          1




          Great Catch! I added x-amazon-apigateway-binary-media-types: */* to the yml file which apparently caused to be decoded. Thanks! It is a little misleading that the 'API Gateway' test doesn't present the body decoded as well
          – nerez
          Nov 12 at 7:07






          Great Catch! I added x-amazon-apigateway-binary-media-types: */* to the yml file which apparently caused to be decoded. Thanks! It is a little misleading that the 'API Gateway' test doesn't present the body decoded as well
          – nerez
          Nov 12 at 7:07




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53256069%2fdifference-in-request-body-in-aws-api-gateway-test-and-curl%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Florida Star v. B. J. F.

          Danny Elfman

          Lugert, Oklahoma