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 installserverless dynamodb install (or to use a persistent docker dynamodb instead, open a new terminal: cd ./dynamodb && docker-compose up -d)serverless offline startserverless 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 tablecurl -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 tablecurl -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 tablecurl -X DELETE -H "Content-Type:application/json" http://localhost:3000/todos/<id>
No output