Create and Deploy the Product API with the GET Method, which integrates with the above function
You can refer my previous blog to have the prerequisites.
1.How to pass Query String to the method?
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.
Step by Step process to pass the Query String Parameters to the Method
[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
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.
2.How to pass Headers to the method?
[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 onthe 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
Step 10:Save the Template
3.How to Transform the Response of the method?
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.
Step by Step process for transforming the JSON response to XML
[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
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.
4.How to receive custom response code (400, 500,…) for the method?
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.
Step by Step process to Receive Custom Response Code from the Method
[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.
“errorMessage”:"Bad Request: You submitted invalid input"
Step 8: Enter the below code in your lambda function before the for loop
Step 9: Test your function with the value greater than 3.
It will return you custom code with our custom error.
5.How partially secure your API using API Keys
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”.
Step by Step process to call the API using API Key
[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 theStages 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
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.