There is common point of confusion. what's the different between REST API vs. HTTP API in AWS and what's the different between them and a traditional Rest API you write with e.g express in node
in the broader software world, a "REST API" is just an architectural pattern built on top of HTTP requests.
The confusion comes entirely from AWS-specific marketing terminology.
When you are inside the AWS ecosystem, Amazon API Gateway is a specific managed service, and AWS chose to split that service into two different flavors (or software products): one called "REST API" and one called "HTTP API."
Here is exactly how they work under the hood, how they differ internally, and how it compares to traditional servers.
1. How It Works: REST API vs. HTTP API (AWS Architecture)
Think of Amazon API Gateway as a reverse proxy or a "front door" that sits in front of your Lambda functions.
AWS REST API (The Heavyweight)
When a request hits an AWS REST API, AWS passes that request through a massive feature pipeline before it ever touches your Lambda code.
[Client Request] ──> [Authentication (Cognito/IAM)] ──> [Request Validation] ──> [Data Transformation (VTL)] ──> [Your Lambda]
- What happens: AWS decrypts the request, validates the JSON schema, checks API keys, runs any custom request transformations using a complex mapping language called VTL, and then invokes your Lambda function.
- Why it costs more: You are paying AWS for all that computing power happening inside the API Gateway layer itself.
AWS HTTP API (The Express Lane)
When a request hits an AWS HTTP API, AWS strips out almost the entire middle pipeline.
[Client Request] ──> [JWT/OAuth2 Authorization Only] ──> [Your Lambda]
- What happens: The HTTP API acts as a lightning-fast router. It optionally checks a standard JWT token, converts the incoming HTTP request directly into a clean JSON object, and throws it straight into your Lambda function.
- Why it costs less: Because AWS is doing almost zero processing or data manipulation. Your TypeScript Lambda function handles the validation and logic instead.
2. The Traditional Service Comparison (Express.js / NestJS)
In a traditional application (like a Node.js/Express app running on a virtual server or Docker container), you don't have this artificial split. You just write a "REST API."
Here is how the architecture looks side-by-side:
Traditional Server (Express.js on EC2/Docker)
In a traditional setup, one single server handles everything.
- The server listens for an HTTP request.
- Your Express middleware handles routing (
app.get('/hello')). - Your Express middleware handles authorization and data validation.
- Your controller executes the business logic.
AWS Serverless (HTTP API + Lambda)
In AWS Serverless, the responsibilities are decoupled into completely separate services:
-
AWS HTTP API handles the networking, SSL certificates, and basic routing (
GET /hello). - AWS Lambda acts as the isolated execution container that runs your TypeScript code to handle the business logic.
Summary: Unmixing the Terms
- In the Real World: A REST API is a conceptual design pattern. An HTTP request is the underlying protocol. A traditional Node.js backend handles both of these inside the application code.
- In AWS Language: "REST API" and "HTTP API" are just two different pricing and feature tiers of the Amazon API Gateway service.
If you don't need AWS to do complex request manipulation before your code runs, you choose the HTTP API tier to save 70% on your infrastructure bill and let your TypeScript code do the heavy lifting!
I hope you find it useful
HASH
Top comments (0)