• Pricing
© 2025 Serverless, Inc. All rights reserved.
Terms of ServicePrivacy Policy
Adam Bergman

AWS Serverless REST API with DynamoDB and offline support example in NodeJS

by

This example demonstrates how to run a service locally, using the 'serverless-offline' plugin. It provides a REST API to manage Todos stored in DynamoDB.

  1. AWS Serverless REST API with DynamoDB and offline support example in NodeJS

Serverless REST API with DynamoDB and offline support

This example demonstrates how to run a service locally, using the serverless-offline plugin. It provides a REST API to manage Todos stored in a DynamoDB, similar to the aws-node-rest-api-with-dynamodb example. A local DynamoDB instance is provided by the serverless-dynamodb-local plugin.

Use-case

Test your service locally, without having to deploy it first.

Setup

npm install
serverless dynamodb install (or to use a persistent docker dynamodb instead, open a new terminal: cd ./dynamodb && docker-compose up -d)
serverless offline start
serverless dynamodb migrate (this imports schema)

Run service offline

serverless offline start

Usage

You can create, retrieve, update, or delete todos with the following commands:

Create a Todo

curl -X POST -H "Content-Type:application/json" http://localhost:3000/todos --data '{ "text": "Learn Serverless" }'

Example Result:

{"text":"Learn Serverless","id":"ee6490d0-aa11e6-9ede-afdfa051af86","createdAt":1479138570824,"checked":false,"updatedAt":1479138570824}%

List all Todos

curl -H "Content-Type:application/json" http://localhost:3000/todos

Example output:

[{"text":"Deploy my first service","id":"ac90feaa11e6-9ede-afdfa051af86","checked":true,"updatedAt":1479139961304},{"text":"Learn Serverless","id":"206793aa11e6-9ede-afdfa051af86","createdAt":1479139943241,"checked":false,"updatedAt":1479139943241}]%

Get one Todo

# Replace the <id> part with a real id from your todos table
curl -H "Content-Type:application/json" http://localhost:3000/todos/<id>

Example Result:

{"text":"Learn Serverless","id":"ee6490d0-aa11e6-9ede-afdfa051af86","createdAt":1479138570824,"checked":false,"updatedAt":1479138570824}%

Update a Todo

# Replace the <id> part with a real id from your todos table
curl -X PUT -H "Content-Type:application/json" http://localhost:3000/todos/<id> --data '{ "text": "Learn Serverless", "checked": true }'

Example Result:

{"text":"Learn Serverless","id":"ee6490d0-aa11e6-9ede-afdfa051af86","createdAt":1479138570824,"checked":true,"updatedAt":1479138570824}%

Delete a Todo

# Replace the <id> part with a real id from your todos table
curl -X DELETE -H "Content-Type:application/json" http://localhost:3000/todos/<id>

No output

Contents

  • Serverless REST API with DynamoDB and offline support
  • Use-case
  • Setup
  • Run service offline
  • Usage
  • Create a Todo
  • List all Todos
  • Get one Todo
  • Update a Todo
  • Delete a Todo

Related

GuidesPluginsExamplesSlack CommunitySupport