uv init
uv add fastapi --extra standard
Create folder /app
Add file init.py inside /app
Add file main.py inside /app
Run fastapi
uv run fastapi dev
https://fastapi.tiangolo.com/tutorial/first-steps/
simple api with get and post
<span>from</span> <span>typing</span> <span>import</span> <span>Union</span><span>from</span> <span>pydantic</span> <span>import</span> <span>BaseModel</span><span>from</span> <span>fastapi</span> <span>import</span> <span>FastAPI</span><span>from</span> <span>fastapi.middleware.cors</span> <span>import</span> <span>CORSMiddleware</span><span>from</span> <span>datetime</span> <span>import</span> <span>datetime</span><span>app</span> <span>=</span> <span>FastAPI</span><span>()</span><span># Not safe! Add your own allowed domains </span><span>origins</span> <span>=</span> <span>[</span><span>"</span><span>*</span><span>"</span><span>,</span><span>]</span><span>app</span><span>.</span><span>add_middleware</span><span>(</span><span>CORSMiddleware</span><span>,</span><span>allow_origins</span><span>=</span><span>origins</span><span>,</span><span>allow_credentials</span><span>=</span><span>True</span><span>,</span><span>allow_methods</span><span>=</span><span>[</span><span>"</span><span>*</span><span>"</span><span>],</span><span>allow_headers</span><span>=</span><span>[</span><span>"</span><span>*</span><span>"</span><span>],</span><span>)</span><span># Define what you getting </span><span>class</span> <span>Stuff</span><span>(</span><span>BaseModel</span><span>):</span><span>content</span><span>:</span> <span>str</span><span># Example GET route for app </span><span>@app.get</span><span>(</span><span>"</span><span>/</span><span>"</span><span>)</span><span>def</span> <span>read_root</span><span>():</span><span>return</span> <span>{</span><span>"</span><span>Message</span><span>"</span><span>:</span> <span>"</span><span>Hello World! FastAPI is working.</span><span>"</span><span>}</span><span># Example POST route for app </span><span>@app.post</span><span>(</span><span>"</span><span>/getdata/</span><span>"</span><span>)</span><span>async</span> <span>def</span> <span>create_secret</span><span>(</span><span>payload</span><span>:</span> <span>Stuff</span><span>):</span><span>with</span> <span>open</span><span>(</span><span>'</span><span>output_file.txt</span><span>'</span><span>,</span> <span>'</span><span>a</span><span>'</span><span>)</span> <span>as</span> <span>f</span><span>:</span><span>now</span> <span>=</span> <span>datetime</span><span>.</span><span>now</span><span>()</span><span>formatted_date</span> <span>=</span> <span>now</span><span>.</span><span>strftime</span><span>(</span><span>"</span><span>%B %d, %Y at %I:%M %p</span><span>"</span><span>)</span><span>f</span><span>.</span><span>write</span><span>(</span><span>formatted_date</span> <span>+</span> <span>"</span><span>: </span><span>"</span> <span>+</span> <span>payload</span><span>.</span><span>content</span><span>)</span><span>f</span><span>.</span><span>write</span><span>(</span><span>'</span><span>\n</span><span>'</span><span>)</span><span>return</span> <span>payload</span><span>.</span><span>content</span><span>from</span> <span>typing</span> <span>import</span> <span>Union</span> <span>from</span> <span>pydantic</span> <span>import</span> <span>BaseModel</span> <span>from</span> <span>fastapi</span> <span>import</span> <span>FastAPI</span> <span>from</span> <span>fastapi.middleware.cors</span> <span>import</span> <span>CORSMiddleware</span> <span>from</span> <span>datetime</span> <span>import</span> <span>datetime</span> <span>app</span> <span>=</span> <span>FastAPI</span><span>()</span> <span># Not safe! Add your own allowed domains </span><span>origins</span> <span>=</span> <span>[</span> <span>"</span><span>*</span><span>"</span><span>,</span> <span>]</span> <span>app</span><span>.</span><span>add_middleware</span><span>(</span> <span>CORSMiddleware</span><span>,</span> <span>allow_origins</span><span>=</span><span>origins</span><span>,</span> <span>allow_credentials</span><span>=</span><span>True</span><span>,</span> <span>allow_methods</span><span>=</span><span>[</span><span>"</span><span>*</span><span>"</span><span>],</span> <span>allow_headers</span><span>=</span><span>[</span><span>"</span><span>*</span><span>"</span><span>],</span> <span>)</span> <span># Define what you getting </span><span>class</span> <span>Stuff</span><span>(</span><span>BaseModel</span><span>):</span> <span>content</span><span>:</span> <span>str</span> <span># Example GET route for app </span><span>@app.get</span><span>(</span><span>"</span><span>/</span><span>"</span><span>)</span> <span>def</span> <span>read_root</span><span>():</span> <span>return</span> <span>{</span><span>"</span><span>Message</span><span>"</span><span>:</span> <span>"</span><span>Hello World! FastAPI is working.</span><span>"</span><span>}</span> <span># Example POST route for app </span><span>@app.post</span><span>(</span><span>"</span><span>/getdata/</span><span>"</span><span>)</span> <span>async</span> <span>def</span> <span>create_secret</span><span>(</span><span>payload</span><span>:</span> <span>Stuff</span><span>):</span> <span>with</span> <span>open</span><span>(</span><span>'</span><span>output_file.txt</span><span>'</span><span>,</span> <span>'</span><span>a</span><span>'</span><span>)</span> <span>as</span> <span>f</span><span>:</span> <span>now</span> <span>=</span> <span>datetime</span><span>.</span><span>now</span><span>()</span> <span>formatted_date</span> <span>=</span> <span>now</span><span>.</span><span>strftime</span><span>(</span><span>"</span><span>%B %d, %Y at %I:%M %p</span><span>"</span><span>)</span> <span>f</span><span>.</span><span>write</span><span>(</span><span>formatted_date</span> <span>+</span> <span>"</span><span>: </span><span>"</span> <span>+</span> <span>payload</span><span>.</span><span>content</span><span>)</span> <span>f</span><span>.</span><span>write</span><span>(</span><span>'</span><span>\n</span><span>'</span><span>)</span> <span>return</span> <span>payload</span><span>.</span><span>content</span>from typing import Union from pydantic import BaseModel from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from datetime import datetime app = FastAPI() # Not safe! Add your own allowed domains origins = [ "*", ] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Define what you getting class Stuff(BaseModel): content: str # Example GET route for app @app.get("/") def read_root(): return {"Message": "Hello World! FastAPI is working."} # Example POST route for app @app.post("/getdata/") async def create_secret(payload: Stuff): with open('output_file.txt', 'a') as f: now = datetime.now() formatted_date = now.strftime("%B %d, %Y at %I:%M %p") f.write(formatted_date + ": " + payload.content) f.write('\n') return payload.content
Enter fullscreen mode Exit fullscreen mode
© 版权声明
THE END
暂无评论内容