Developing API exchange sharing service - Part I

In this series of articles, I'll go through my experience of building a simple Serverless API using Flask python framework and deploying it on AWS Lambda and API gateway.

This API is used from HttpRider to save API exchanges (request+response).

Here is a sample page generated from HttpRider.

Demo

Quick Demo

The service itself consists of two simple APIs.

POST /prints

Saves the HTML encoded in base64 in dynamo database. Once it is saved, it returns the URL of the shared document in the Location header of the response.

POST /prints

Headers

Content-Type: application/json

Body

{
    "document": "SHR0cFJpZGVy"
}

Response

HTTP 201

Headers

location: http://localhost:8080/prints/025000cf-14ba-421b-a000-d2d043d4d90b

GET /prints/{print-id}

This GET request uses the URL from the location header in the previous request and receives the HTML response with the document.

GET /prints/025000cf-14ba-421b-a000-d2d043d4d90b

Headers

Accept: text/html

Response

HTTP 200

Headers

content-type: text/html; charset=utf-8

Body

<!DOCTYPE html>
<html>
<head>
    <title>Deskriders :: API Print</title>
    <style>
       .... removed to save space ...
    </style>
</head>
<body>
<div>HttpRider</div>
</body>
</html>

In the next part, we will look at setting up a new Flask project and serverless framework configuration to deploy it to AWS Lambda.