-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
63 lines (45 loc) · 1.6 KB
/
main.py
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
56
57
58
59
60
61
62
63
# Add just one line to connect your FastAPI backend to Chrome DevTools
import subtrace
from fastapi import FastAPI, Header, Response
from typing import Annotated
from pydantic import BaseModel
import requests
class Item(BaseModel):
name: str
price: float
app = FastAPI()
items = {
"b8f2": Item(**{"name": "bus", "price": 300}),
"cfc4": Item(**{"name": "car", "price": 100}),
}
# List all items
@app.get("/items")
def list_items():
return {"success": True, "items": items}
# Get an item by ID
@app.get("/items/{item_id}")
def get_item(item_id: str, response: Response):
if item_id not in items:
response.status_code = 404
return {"success": False}
return {"success": True, "item": items[item_id]}
# Create a new item (authentication required)
@app.post("/items")
def create_item(item: Item, response: Response, authorization: Annotated[str | None, Header()] = None):
if authorization != "Bearer 1234":
response.status_code = 403
return {"success": False}
item_id = requests.get("https://httpbin.org/uuid").json()["uuid"][:4]
items[item_id] = item
return {"success": True, "item_id": item_id, "item": item}
# Delete an item (authentication required)
@app.delete("/items/{item_id}")
def delete_item(item_id: str, response: Response, authorization: Annotated[str | None, Header()] = None):
if authorization != "Bearer 1234":
response.status_code = 403
return {"success": False}
if item_id not in items:
response.status_code = 404
return {"success": False}
del items[item_id]
return {"success": True}