Skip to main content

Creating RESTful APIs with Flask

Introduction to RESTful APIs

Before we delve into creating RESTful APIs with Flask, it's important to understand what RESTful APIs are. REST stands for Representational State Transfer, a standard way of building web services. APIs (Application Programming Interfaces) that adhere to the principles of REST are known as RESTful APIs. They allow different software systems to communicate with each other by using HTTP methods like GET, POST, PUT, DELETE, etc.

Setting Up

To start, you will need to have Flask installed on your system. If you haven't installed Flask yet, you can do so by running the following command in your terminal:

pip install flask

For this tutorial, we will also be using the Flask-RESTful extension, which is a wrapper for Flask that simplifies the creation of RESTful APIs. You can install it by running:

pip install flask-restful

Your First RESTful API Endpoint

Let's start by creating a basic Flask app that will serve as the foundation of our API. Create a new Python file and add the following:

from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

class HelloWorld(Resource):
def get(self):
return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

if __name__ == '__main__':
app.run(debug=True)

In this code, we first import the necessary modules and create a Flask web server from the Flask module. Resource represents an abstract RESTful resource. Api works as a wrapper for the Flask application for handling API resources.

HelloWorld is a simple class that inherits from Resource. It has a method named get which corresponds to the HTTP GET method. We then add this resource to our API under the route /. Now, if you run your application and visit http://localhost:5000/ in your browser, you will see the message {'hello': 'world'}.

Adding More Functionality

Now let's add a more complex resource to our API. We'll create a Todo resource, that can handle three different HTTP methods: GET, PUT, and DELETE. Create a Todo class that looks like this:

class Todo(Resource):
def get(self, todo_id):
return {todo_id: todos[todo_id]}

def put(self, todo_id):
todos[todo_id] = request.form['data']
return {todo_id: todos[todo_id]}

def delete(self, todo_id):
del todos[todo_id]
return {'result': 'success'}

Then, add the following line to add this resource to our API:

api.add_resource(Todo, '/<string:todo_id>')

Now you can use the HTTP methods GET, PUT, and DELETE to interact with your Todo resource. You can test these methods using a tool like curl or Postman.

Conclusion

That's it! With just a few lines of code, you've built a fully functioning RESTful API using Flask and Flask-RESTful. As you can see, Flask makes it easy and straightforward to build APIs, allowing you to focus on your application's logic rather than the details of routing and HTTP. Happy coding!