Python FastAPI quickstart in uv

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

原文链接:Python FastAPI quickstart in uv

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
May we all have the power to love ourselves and others.
愿我们,都有能力爱自己,有余力爱别人
评论 抢沙发

请登录后发表评论

    暂无评论内容