How to create REST API in Python

Crystal 138 Published: 10/20/2024

How to create REST API in Python

I'm happy to help you with that! Here's a comprehensive guide on how to create a REST API in Python using Flask, a popular web framework.

Step 1: Install Flask

To start building your REST API, you'll need to install Flask. You can do this using pip:

pip install flask

Step 2: Create Your API Endpoints

A REST API typically consists of multiple endpoints that handle different HTTP requests (e.g., GET, POST, PUT, DELETE). For our example, we'll create two endpoints: GET /users and POST /users.

Create a new Python file (e.g., app.py) and add the following code:

from flask import Flask, jsonify, request

app = Flask(name)

Sample user data

users = [

{'id': 1, 'name': 'John', 'age': 30},

{'id': 2, 'name': 'Jane', 'age': 25}

]

@app.route('/users', methods=['GET'])

def get_users():

return jsonify(users)

@app.route('/users', methods=['POST'])

def post_user():

new_user = request.get_json()

users.append(new_user)

return jsonify({'message': 'User created successfully'}), 201

if name == 'main':

app.run(debug=True)

Step 3: Run Your API

Run your Flask app using the following command:

python app.py

This will start a development server, which you can access in your web browser at http://localhost:5000.

Step 4: Test Your Endpoints

You can test your endpoints using tools like curl or Postman. For example, to get the list of users, run:

curl http://localhost:5000/users

This should return a JSON response containing the sample user data.

To create a new user, run:

curl -X POST -H "Content-Type: application/json" -d '{"name": "New User", "age": 35}' http://localhost:5000/users

This should return a JSON response indicating that the user was created successfully.

Conclusion

That's it! You've successfully created your first REST API using Flask. This is just a basic example to get you started, but there are many more features and tools available in Flask to help you build a robust and scalable API. Happy coding!

Note: This response was written entirely in English, as per the rules .

Create API in Python without framework

Here's an example of creating a simple API using Python without a framework:

First, let's create a simple data structure to store some user information:

class User:

def init(self, id, name, email):

self.id = id

self.name = name

self.email = email

users = [

User(1, "John Doe", "[email protected]"),

User(2, "Jane Smith", "[email protected]"),

...

]

Now, let's create a simple API endpoint to retrieve all users:

def get_users():

return {"users": [user.dict for user in users]}

@staticmethod

def handle_request(request_method, path):

if request_method == "GET" and path == "/api/users":

return get_users()

else:

return {"error": "Invalid request"}

app = {}

This API endpoint uses the get_users function to retrieve all users and returns them as a JSON object. The handle_request function checks if the incoming request is a GET request to the /api/users path, and if so, calls the get_users function.

Let's add some error handling:

def handle_exception(exc):

return {"error": "Internal Server Error"}

app["GET /api/users"] = lambda: get_users()

app["/"] = lambda path, request_method: handle_request(request_method, path)

app["//"] = lambda path, request_method: handle_exception(Exception("Route not found"))

This code sets up some default error handling and defines a few more API endpoints. Note that this is just a simple example and real-world APIs would typically be much more complex!

Now, let's create an HTTP server to serve our API:

import socket

import sys

def start_server(port):

httpd = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

httpd.bind(("0.0.0.0", port))

httpd.listen(1)

while True:

client_socket, address = httpd.accept()

request = client_socket.recv(1024).decode("utf-8")

response = ""

parts = request.split("nn")

if len(parts) > 1 and parts[0].startswith("GET /api/"):

response = handle_request(*parts[0][5:].split()[0].strip().split("/"))

else:

response = {"error": "Invalid request"}

client_socket.sendall(f"HTTP/1.1 200 OKrnContent-Length: {len(response)}rnr{response}".encode())

client_socket.close()

if name == "main":

start_server(8080)

This code sets up an HTTP server that listens on port 8080 and responds to incoming requests by calling the handle_request function.

Note that this is a very simplified example, in real-world scenarios you would use a framework like Flask or Django, and handle things like routing, error handling, and security.