-
Notifications
You must be signed in to change notification settings - Fork 0
/
hello_world.py~
77 lines (55 loc) · 2.39 KB
/
hello_world.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"""
First App using FastAPI w/ Python
"""
#https://fastapi.tiangolo.com/tutorial/first-steps/
from fastapi import FastAPI
#Run w/ 'uvicorn helloWorld:myFirstApp --reload'
myFirstApp = FastAPI() #Create instance of FastAPI
#Async is asynchronous: https://fastapi.tiangolo.com/async/#in-a-hurry
#Get is an HTTPS operator
@myFirstApp.get("/") #Path that the the function below us in charge of handling.
async def root():
#This function gets called by FastAPI everytime it recievews a request to the URL "/""
return {"message": "Hello World"}
# ~~~ Path Parameters ~~
#https://fastapi.tiangolo.com/tutorial/path-params/
#Passing variables/parameters as arguments to the function:
@myFirstApp.get("/testParameters/{parameter_id}")
async def read_item(parameter_id):
return {"parameter_id": parameter_id}
#You pass in the argument 'parameter_id' and the function will return the same parameter back to you
#With types:
#This forces you to pass in parameter id as an integer only
@myFirstApp.get("/testParametersIntOnly/{parameter_id}")
async def read_item_intOnly(parameter_id: int):
return {"parameter_id": parameter_id}
#Passing in anything else will just throw you an error.
#Order matters:
#If you want to do something like below, you need to make sure the fixed path is declared first
@myFirstApp.get("/users/me") #The fixed path
async def read_user_me():
return {"user_id": "the current user's id"}
@myFirstApp.get("/users/{user_id}") #The path w/ a parameter
async def read_user(user_id: str):
return {"user_id": user_id}
#Going to localhost:8000/users/me will run the first (fixed) method
#But going to localhost:8000/users/'anything else' will run the second one
# Predefined values (enums):
from enum import Enum
#Here is a string enum:
class ModelName(str, Enum):
alexnet = "alexnet"
resnet = "resnet"
lenet = "lenet"
#Using the enum
@myFirstApp.get("/models/{model_name}")
async def get_model(model_name: ModelName):
if model_name == ModelName.alexnet:
return {"model_name": model_name, "message": "Selected Alex Net"}
if model_name == ModelName.resnet:
return {"model_name": model_name, "message": "Selected Res Net"}
return {"model_name": model_name, "message": "Selected Lenet"}
#Passing entire file path as an argument/parameter:
@myFirstApp.get("/files/{file_path:path}")
async def read_files(file_path: str):
return {"file_path": file_path}