Thuta Learning
ProjectsProgrammingbeginner

REST API with Flask

Relax. We'll talk through this in plain words — no textbook voice.

🚀 REST API with Flask - Build a complete RESTful API backend. Advanced project!

📚 Concepts Covered:

• Flask framework

• REST principles

• CRUD operations

• JSON responses

• Status codes

• API endpoints

✨ Features:

• User management

• GET/POST/PUT/DELETE

• Data validation

• Error handling

• JSON responses

💡 Installation: pip install flask

python
# Flask REST API (Simplified Demo)

class UserAPI:
    def __init__(self):
        self.users = [
            {"id": 1, "name": "Aung Kyaw", "email": "aung@example.com"},
            {"id": 2, "name": "Su Su", "email": "susu@example.com"}
        ]
        self.next_id = 3
    
    def get_all_users(self):
        """GET /api/users"""
        return {"status": "success", "data": self.users, "count": len(self.users)}
    
    def get_user(self, user_id):
        """GET /api/users/:id"""
        user = next((u for u in self.users if u["id"] == user_id), None)
        if user:
            return {"status": "success", "data": user}
        return {"status": "error", "message": "User not found"}, 404
    
    def create_user(self, name, email):
        """POST /api/users"""
        new_user = {"id": self.next_id, "name": name, "email": email}
        self.users.append(new_user)
        self.next_id += 1
        return {"status": "success", "data": new_user}, 201
    
    def delete_user(self, user_id):
        """DELETE /api/users/:id"""
        self.users = [u for u in self.users if u["id"] != user_id]
        return {"status": "success", "message": "User deleted"}

# Demo API
api = UserAPI()
print("=== REST API Demo ===\n")
print("GET /api/users:")
print(api.get_all_users())
print("\nGET /api/users/1:")
print(api.get_user(1))
print("\nPOST /api/users:")
print(api.create_user("Min Min", "minmin@example.com"))
print("\nGET /api/users (after POST):")
print(api.get_all_users())
You should see
=== REST API Demo === GET /api/users: {'status': 'success', 'data': [{'id': 1, 'name': 'Aung Kyaw', 'email': 'aung@example.com'}, {'id': 2, 'name': 'Su Su', 'email': 'susu@example.com'}], 'count': 2} GET /api/users/1: {'status': 'success', 'data': {'id': 1, 'name': 'Aung Kyaw', 'email': 'aung@example.com'}} POST /api/users: ({'status': 'success', 'data': {'id': 3, 'name': 'Min Min', 'email': 'minmin@example.com'}}, 201) GET /api/users (after POST): {'status': 'success', 'data': [{'id': 1, 'name': 'Aung Kyaw', 'email': 'aung@example.com'}, {'id': 2, 'name': 'Su Su', 'email': 'susu@example.com'}, {'id': 3, 'name': 'Min Min', 'email': 'minmin@example.com'}], 'count': 3}
REST API with Flask | Thuta Learning