This example demonstrates how to run a service locally, using the serverless-offline plugin. It provides an HTTP API to manage Todos stored in a DynamoDB, similar to the aws-node-http-api-dynamodb example. A local DynamoDB instance is provided by the serverless-dynamodb-local plugin.
Test your service locally, without having to deploy it first.
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)
serverless offline start
You can create, retrieve, update, or delete todos with the following commands:
curl -X POST -H "Content-Type:application/json" https://localhost:3000/todos --data '{ "text": "Learn Serverless" }'
Example Result:
{"text":"Learn Serverless","id":"ee6490d0-aa11e6-9ede-afdfa051af86","createdAt":1479138570824,"checked":false,"updatedAt":1479138570824}%
curl -H "Content-Type:application/json" https://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}]%
# Replace the <id> part with a real id from your todos table
curl -H "Content-Type:application/json" https://localhost:3000/todos/<id>
Example Result:
{"text":"Learn Serverless","id":"ee6490d0-aa11e6-9ede-afdfa051af86","createdAt":1479138570824,"checked":false,"updatedAt":1479138570824}%
# Replace the <id> part with a real id from your todos table
curl -X PUT -H "Content-Type:application/json" https://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}%
# Replace the <id> part with a real id from your todos table
curl -X DELETE -H "Content-Type:application/json" https://localhost:3000/todos/<id>
No output