- Consulting
- Training
- Partners
- About Us
x
From my previous blog, you can get a hands on with the AWS API Gateway. Now we will deep dive into it. Following points will be covered.
You can refer my previous blog to have the prerequisites.
You have an API with you already, where you are calling an API with GET method, you get all the records in response, but what if we want a specific record in response? How can we get it? In this scenario, we can use the Query String. We will get the query string parameter from the HTTP request and then integrate the request using Mapping Templates.
[showhide type=”qs” more_text=”click here for Detailed Instructions.. ” less_text=”Hide Details” hidden=”yes”]
Step 1: Go to your method, you will see the below screen, click on Integration Request.
Step 2: You will see the following screen
Step 3: Click on Mapping Templates
Step 4: Click on Add mapping templates
Step 5: Write “text/plain” and click on the tick to save
Step 6: Click on pencil symbol near Input passthrough and select Mapping Template
Step 7: Enter following JSON string
1 2 3 |
{ "prod_Id" : "$input.params('prod_Id')" } |
Step 8: Save the Template by clicking on the tick.
Step 9: Your API will accept the query string and it will be mapped as per our code.
Step 10: You can TEST your API using REST Client. Call your API passing query string.
[/showhide]
[showhide type=”header” more_text=”click here for Detailed Instructions.. ” less_text=”Hide Details” hidden=”yes”]
Step 1: Go to the Method Request and Click on the HTTP Request Headers
Step 2: Click on the Add Header
Step 3: Enter Name of the Header parameter
Step 4: Navigate back to the Method Execution Console and click on Integration Request
Step 5: Click on the Mapping Templates
Step 6: Click on the Add mapping templates
Step 7: Write “application/json” explicitly.
Step 8: Click on Input passthrough
Step 9: Enter the following JSON string
1 2 3 |
{ "prod_Id" : "$input.params('prod_Id')" } |
Step 10: Save the Template
[/showhide]
Converting the response helps when we are returning in JSON, but we need the output in XML. We can achieve the same by transforming the API response. For transforming the response, we will again use mapping templates. We will write a template which converts the response and gives the desired type in return.
[showhide type=”trans” more_text=”click here for Detailed Instructions.. ” less_text=”Hide Details” hidden=”yes”]
Step 1: Go to Integration Response
Step 2: Expand the integration response as shown below
Step 3: Click on add Mapping templates
Step 4: Click on add Mapping templates
Step 5: Enter “application/json” and click on tick to save it
Step 5: Click on pencil icon to edit the select Mapping Template.Enter the following Code and save
1 2 3 4 5 6 |
#set ($response = $input.path('$')) <response> <prod_Id>$response.productDetails.prod_Id</prod_Id> <prod_Name>$response.productDetails.prod_Name</prod_Name> <prod_Price>$response.productDetails.prod_Price</prod_Price> </response> |
Step 6: Navigate back to the Method Execution console and click on Method Response
Step 7: Expand the Method response and click on a pencil Icon as shown below
Step 8: Replace “json” with “xml” and save
Note: Again deploy your API to test your API from REST Client.
Step 9: Test the API from the REST client
You will find the following response. Now check the Content-type in response.
[/showhide]
When we are calling any method, by default it returns 200 as a response code in AWS API Gateway. Even though if the response is success or error still the code returned will be 200. AWS API Gateway provides the feature where we can actually give the custom code for the response.
We have an API where we are passing a query string or header values like 1, 2 and 3. In response, we are getting the product detail about the respective product_Id. So we will set the custom code for the BAD REQUEST. If the person is passing the query string value more than 3, we will return an error with the custom code 400.
[showhide type=”code” more_text=”click here for Detailed Instructions.. ” less_text=”Hide Details” hidden=”yes”]
Step 1: On your Method screen click on Method Response.
Step 2: Click on Add Response.
Step 3: Select the response code 400 and click on the tick to save.
Step 4: Click on Integration Response and add an integration response.
Step 5: Provide Lambda Error Regex as “Bad Request: .*”. For Method Response, select the Method response status as the code that you have inserted and click on save.
Step 6: Now click on an arrow button as shown below and click on mapping templates and add a template.
Step 7: Provide “application/json” as a content type and provide following string as a template and save.
1 2 3 |
{ “errorMessage”: "Bad Request: You submitted invalid input" } |
Step 8: Enter the below code in your lambda function before the for loop
1 2 3 |
{ "prod_Id" : "$input.params('prod_Id')" } |
Step 9: Test your function with the value greater than 3.
It will return you custom code with our custom error.
[/showhide]
API keys are key generated by the Developer. Developer distributes the key to the third party users to restrict the unwanted user partially as well as to monitoring the API usage of the particular user. I have said that the API key is for the used for the authentication partially because AWS does not recommend to use only API Keys for the authentication.
When we enable the API Keys, the user must pass the Key to call the API. Othervise it will give retuen a message “Not able to access resources”.
[showhide type=”key” more_text=”click here for Detailed Instructions.. ” less_text=”Hide Details” hidden=”yes”]
Step 1: In AWS API Gateway Menu bar click on APIs and select API Keys
Step 2: Click on Create API Key
Step 3: Provide and description, leave the check-box unchecked and save
Step 4: Your API key has been generated, select API and Stage and click on Add.
Step 5: You can see your stage has been added to the Stages Enabled.
Step 6: Now navigate to the API Method Execution Console.
Step 7: Click on Method Response
Step 8: Make API Key Required as true
Step 9: Now you can call API from the REST client it will give you message that “Not able to access resource”
Step 10: Now provide API key in headers of the API call as shown below
Step 11: You will get the proper response
[/showhide]
AWS API Gateway provides the service which provides the platform to create REST APIs with minimal efforts.it does not only provides the API calls as well as such a useful features as passing query string and header parameters, transforming the response type, returning the custom error code and using the API Keys for authentication.
The AWS API is becoming the powerful tool to create and deploy the REST APIs with integrating with Lambda function, although you can use the other endpoints as well.It also provides many other features like Cloud watch Monitoring,caching.API Key to distribute to the third party users.
If you have any queries on API gateway or you have trouble getting it setup, feel free to drop a question into the comment section below.
Voiced by Amazon Polly |
CloudThat is a leading provider of cloud training and consulting services, empowering individuals and organizations to leverage the full potential of cloud computing. With a commitment to delivering cutting-edge expertise, CloudThat equips professionals with the skills needed to thrive in the digital era.
Our support doesn't end here. We have monthly newsletters, study guides, practice questions, and more to assist you in upgrading your cloud career. Subscribe to get them all!
mahesh
Sep 28, 2016
Can you give me an example for get request using lambda?
e.g. function accepts “Key”: “mykey”
and returns its “Value”: “its value”
Bhavik Joshi
Feb 17, 2017
please follow my blog https://blog.cloudthat.com/api-gateway-lambda-dynamodb/. you will definately find the answer for your question.
abhishek
Dec 7, 2015
buddy. the links aren’t working in this article.
Bhavik Joshi
Dec 31, 2015
Can you please mention the link where you are facing the problem?
Click to Comment