File size: 1,434 Bytes
8192c2a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from typing import List, Optional
from pydantic import BaseModel
from fastapi import FastAPI, HTTPException
import uvicorn

app = FastAPI()

#1. define the blueprint for APIs

class Customers(BaseModel):

    id: int
    name: str
    email: str
    phone: Optional[str] = None
    address: Optional[str] = None

#2. create the APIs endpoint

customers_list = []
# create
@app.post("/customers", response_model=Customers)
def create_customer(customer: Customers):
    customers_list.append(customer)
    return customer

# read

@app.get("/customers", response_model=List[Customers])
def get_customers():
    return customers_list

# update
@app.put("/customers/{id}", response_model=Customers)
def update_customer(id: int, customer: Customers):
    for i, existing_customer in enumerate(customers_list):
        if existing_customer.id == id:
            customers_list[i] = customer
            return customer
    raise HTTPException(status_code=404, detail="Customer not found")

# delete
@app.delete("/customers/{id}", response_model=Customers)
def delete_customer(id: int):
    for i, existing_customer in enumerate(customers_list):
        if existing_customer.id == id:
            deleted_customer = customers_list.pop(i)
            return deleted_customer
    raise HTTPException(status_code=404, detail="Customer not found")

#3. run the app

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=7860)