LibraryAPI Gateway Request and Response Mapping

API Gateway Request and Response Mapping

Learn about API Gateway Request and Response Mapping as part of Serverless Architecture with AWS Lambda

API Gateway Request and Response Mapping for Serverless APIs

When building serverless APIs with AWS Lambda, Amazon API Gateway acts as the front door. A crucial aspect of this integration is managing how data flows between the client, API Gateway, and your Lambda function. This is achieved through Request and Response Mapping.

Understanding Request Mapping

Request mapping allows you to transform the incoming HTTP request from a client before it's sent to your backend integration, such as an AWS Lambda function. This transformation can involve selecting specific parts of the request (like headers, query parameters, or the request body), restructuring them, or even adding new elements.

Request mapping transforms incoming client requests for backend processing.

You can use mapping templates to extract, reshape, and enrich data from HTTP requests (headers, query strings, body) before they reach your Lambda function. This ensures your Lambda function receives data in the format it expects.

API Gateway supports mapping templates using Apache Velocity Template Language (VTT) or JavaScript Object Notation (JSON) for request mapping. These templates define how to construct the payload that will be sent to your backend. For example, you might extract a user ID from a JWT token in the headers, combine it with a query parameter, and pass it as a single JSON object to your Lambda function. This decouples the client's request format from your Lambda function's expected input format.

Understanding Response Mapping

Response mapping is the inverse of request mapping. It allows you to transform the response received from your backend integration (e.g., AWS Lambda) before it's sent back to the client. This is useful for formatting the output, removing sensitive information, or adapting the response to meet the client's expectations.

Response mapping shapes the backend's output for the client.

Similar to request mapping, you can use mapping templates to modify the data returned by your Lambda function. This might include filtering out internal details, renaming fields, or structuring the data into a specific JSON format that the client application can easily consume.

Response mapping templates are also written in VTL or JSON. They take the output from your Lambda function (typically a JSON object) and transform it into the desired HTTP response. For instance, if your Lambda function returns a complex object with many internal fields, you might use a response mapping template to select only the essential data fields and present them to the client in a clean, predictable structure. This also helps in versioning your API responses independently of your backend logic.

Key Concepts and Benefits

FeatureRequest MappingResponse Mapping
PurposeTransform incoming request for backendTransform backend response for client
InputClient HTTP request (headers, body, params)Backend integration output (e.g., Lambda JSON)
OutputPayload for backend integrationHTTP response for client
Use CasesData validation, enrichment, format adaptationData sanitization, formatting, versioning

Mapping templates provide a powerful way to decouple your API's frontend from its backend, allowing for greater flexibility and maintainability.

Example Scenario: User Profile API

Consider an API endpoint to fetch a user's profile. The client might send a request like this:

Client Request: GET /users/123?fields=name

Your Lambda function might expect a payload like this:

Lambda Input Payload: { "userId": "123", "requestedFields": ["name", "email"], "authHeader": "Bearer <token>" }

A request mapping template in API Gateway can transform the incoming request into the expected Lambda input. This involves extracting the path parameter userId, the query string parameter fields and splitting it into an array, and the Authorization header. The template would construct a JSON object with these elements.

📚

Text-based content

Library pages focus on text content

Similarly, if your Lambda function returns a detailed user object, a response mapping template can select only the

code
name
and
code
email
fields as requested by the client.

What is the primary purpose of API Gateway request mapping?

To transform the incoming client request before it reaches the backend integration (e.g., Lambda).

What are the common languages used for API Gateway mapping templates?

Apache Velocity Template Language (VTL) and JSON.

Learning Resources

API Gateway Request and Response Transformations(documentation)

Official AWS documentation detailing how to transform requests and responses in API Gateway, covering mapping templates and their capabilities.

Apache Velocity Tools for API Gateway(documentation)

A comprehensive reference for Apache Velocity Template Language (VTL) syntax and context variables available within API Gateway mapping templates.

Mapping Templates - AWS API Gateway(video)

A video tutorial explaining the concepts and practical application of mapping templates in AWS API Gateway for request and response manipulation.

Serverless APIs with API Gateway and Lambda(blog)

A blog post from AWS that covers building serverless APIs, often touching upon the role of API Gateway and data transformation.

API Gateway Mapping Templates: A Deep Dive(blog)

An in-depth article exploring the nuances of API Gateway mapping templates, including practical examples and best practices.

AWS API Gateway Request Mapping Examples(documentation)

A community discussion on AWS re:Post featuring practical examples of request mapping for various scenarios.

Understanding API Gateway Integration Types(documentation)

Explains different integration types in API Gateway, which is foundational to understanding where mapping applies.

JSONPath - Wikipedia(wikipedia)

Provides context on JSONPath, a query language often used in conjunction with JSON data, which can be relevant for understanding data extraction in mapping.

Building a RESTful API with AWS API Gateway and Lambda(video)

A video tutorial demonstrating the end-to-end process of creating a serverless API, likely including mapping configurations.

API Gateway Mapping Templates: Advanced Techniques(blog)

A blog post focusing on more advanced uses and techniques for API Gateway mapping templates, offering practical tips.