Obafemi Emmanuel

API Development with Python

Published 1 month ago

API Development with Python

APIs (Application Programming Interfaces) allow different software systems to communicate with each other. In modern web development, RESTful APIs are widely used to build scalable and flexible applications. This blog explores the core concepts of RESTful APIs, how to create APIs using Flask-RESTful, and how to consume APIs with the Requests library in Python.


1. Understanding RESTful API Concepts

REST (Representational State Transfer) is an architectural style that defines a set of constraints for creating web services. RESTful APIs follow these principles:

  • Statelessness: Each request from a client to a server must contain all necessary information. The server does not store client session data between requests.
  • Client-Server Architecture: The client and server are independent; the client makes requests, and the server processes them.
  • Resource-Based: Everything in REST is a resource (e.g., a user, a product, a blog post) identified by a URL.
  • HTTP Methods: RESTful APIs use standard HTTP methods:
  • GET – Retrieve data
  • POST – Create new data
  • PUT – Update existing data
  • DELETE – Remove data
  • JSON as Data Format: Most RESTful APIs use JSON (JavaScript Object Notation) for data exchange due to its simplicity and readability.

2. Creating APIs Using Flask-RESTful

Step 1: Install Flask and Flask-RESTful

First, ensure you have Flask and Flask-RESTful installed:

pip install flask flask-restful

Step 2: Creating a Basic API

Create a simple RESTful API using Flask-RESTful:

from flask import Flask, request
from flask_restful import Resource, Api

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

# Sample data
users = {
    1: {"name": "John Doe", "age": 30},
    2: {"name": "Jane Doe", "age": 25}
}

# Define the User Resource
class User(Resource):
    def get(self, user_id):
        if user_id in users:
            return users[user_id], 200
        return {"message": "User not found"}, 404

    def put(self, user_id):
        data = request.get_json()
        users[user_id] = data
        return users[user_id], 200

    def delete(self, user_id):
        if user_id in users:
            del users[user_id]
            return {"message": "User deleted"}, 200
        return {"message": "User not found"}, 404

# Define the UserList Resource
class UserList(Resource):
    def get(self):
        return users, 200

    def post(self):
        user_id = max(users.keys()) + 1
        data = request.get_json()
        users[user_id] = data
        return users[user_id], 201

# Add Resources to API
api.add_resource(User, "/user/<int:user_id>")
api.add_resource(UserList, "/users")

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

Step 3: Running the API

Save the script as app.py and run it:

python app.py

Your API will be accessible at http://127.0.0.1:5000.


Step 4: Testing the API with cURL or Postman

You can test the API using Postman or cURL. Example requests:

  • Get all users: GET /users
  • Get a specific user: GET /user/1
  • Add a new user: POST /users with JSON body { "name": "Alice", "age": 28 }
  • Update a user: PUT /user/1 with JSON body { "name": "John Doe", "age": 31 }
  • Delete a user: DELETE /user/1

3. Consuming APIs with Requests

To consume APIs in Python, the requests library is commonly used.


Step 1: Install Requests

pip install requests

Step 2: Making API Requests

Get Request

import requests

response = requests.get("http://127.0.0.1:5000/users")
print(response.json())

Post Request

new_user = {"name": "Alice", "age": 28}
response = requests.post("http://127.0.0.1:5000/users", json=new_user)
print(response.json())

Put Request

update_user = {"name": "John Doe", "age": 35}
response = requests.put("http://127.0.0.1:5000/user/1", json=update_user)
print(response.json())

Delete Request

response = requests.delete("http://127.0.0.1:5000/user/1")
print(response.json())

Conclusion

Building RESTful APIs with Flask-RESTful is straightforward and powerful. We covered:

  • The key concepts of RESTful APIs
  • How to build a RESTful API using Flask-RESTful
  • How to consume APIs using the Python requests library

Leave a Comment


Choose Colour