我正在使用 pydantic 来验证我需要验证电子邮件的响应。我正在这样尝试。
class CheckLoginRequest(BaseModel):
user_email: str = Field(min_length=5, default="username")
user_number: str = Field(min_length=5, default="+923323789263")
@field_validator("user_email")
def validate_email(self, value):
try:
validate_email(value)
except EmailNotValidError:
raise ValueError("Invalid email format")
return value
Run Code Online (Sandbox Code Playgroud)
但它显示错误pydantic.errors.PydanticUserError: @field_validator cannot be applied to instance methods
我尝试使用@validator它,但它已被弃用。
我正在尝试使用 FastAPI 为神经网络提供服务。
from fastapi import Depends, FastAPI
from pydantic import BaseModel
from typing import Dict
class iRequest(BaseModel):
arg1: str
arg2: str
class iResponse(BaseModel):
pred: str
probs: Dict[str, float]
@app.post("/predict", response_model=iResponse)
def predict(request: iRequest, model: Model = Depends(get_model)):
pred, probs = model.predict(request.arg1, request.arg2)
return iResponse(pred = pred, probs = probs)
Run Code Online (Sandbox Code Playgroud)
手动站点 http://localhost:8000/docs#/default/predict_predict_post 工作正常并转换为以下 curl 命令:
curl -X POST "http://localhost:8000/predict" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"arg1\":\"I am the King\",\"arg2\":\"You are not my King\"}"
Run Code Online (Sandbox Code Playgroud)
这也有效。当我尝试使用 python 请求查询 API 时:
import …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 FastAPI 中的 PUT 操作更新数据库中的单个记录。但出于某种原因,我不断收到此错误。除了这一项之外,所有其他操作都可以正常工作。该错误仅针对更新查询引发。
AttributeError: 'Blog' object has no attribute 'items'
Run Code Online (Sandbox Code Playgroud)
这是相关的代码。
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
class Blog(BaseModel):
title: str
body: str
@app.put('/blog/{id}', status_code=status.HTTP_204_NO_CONTENT, response_class=Response)
def update(id: int, request: schemas.Blog, db: Session = Depends(get_db)):
blog = db.query(models.Blog).filter(models.Blog.id == id)
if not blog.first():
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,
detail=f'Blog with id {id} not found')
blog.update(request)
db.commit()
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪:
Traceback (most recent call last):
File "c:\dev\fast-tuts\env\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 396, in run_asgi
result = await app(self.scope, self.receive, self.send)
File "c:\dev\fast-tuts\env\lib\site-packages\uvicorn\middleware\proxy_headers.py", line …Run Code Online (Sandbox Code Playgroud) 我正在使用 FastAPI,创建一个 pydantic 模型,其中“日期”作为字段之一的名称。我注意到这会给出错误,生成的架构上显示的类型将为空。我找到了解决此问题的方法,但我想知道为什么我不能首先使用这个“日期”名称。
from datetime import date
from fastapi import FastAPI
from pydantic import BaseModel, Field
class Item(BaseModel):
# d: date = None # works fine
# date: date = None # does not work
d: date = Field(..., alias="date") # the workaround
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
Run Code Online (Sandbox Code Playgroud) 我想在 VsCode 中使用 pip 安装 fastapi
pip install fastapi[all]
Run Code Online (Sandbox Code Playgroud)
但我遇到了这个巨大的错误。我究竟做错了什么?
ERROR: Command errored out with exit status 1:
command: 'C:\Users\krish\Desktop\Codes\API\venv\Scripts\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\krish\\AppData\\Local\\Temp\\pip-install-eqmneh6a\\httptools_b8491d7c29264d1c9eb72c9367d56d7a\\setup.py'"'"'; __file__='"'"'C:\\Users\\krish\\AppData\\Local\\Temp\\pip-install-eqmneh6a\\httptools_b8491d7c29264d1c9eb72c9367d56d7a\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\krish\AppData\Local\Temp\pip-record-wvba_iw2\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Users\krish\Desktop\Codes\API\venv\include\site\python3.10\httptools'
cwd: C:\Users\krish\AppData\Local\Temp\pip-install-eqmneh6a\httptools_b8491d7c29264d1c9eb72c9367d56d7a\
Complete output (25 lines):
running install
running build
running build_py
creating build
creating build\lib.win-amd64-3.10
creating build\lib.win-amd64-3.10\httptools
copying httptools\_version.py -> build\lib.win-amd64-3.10\httptools
copying httptools\__init__.py …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 FastAPI 从我的 POST 请求中读取正文。但是我无法理解(...)Body 函数的论据是什么
这是我的代码:
@app.post('/createPosts')
def create_post(payload: dict = Body(...)):
print(payload)
return {'message': 'succesfully created post'}
Run Code Online (Sandbox Code Playgroud) 我想使用 FastAPI。我使用 pip 安装了它,当我将它添加(并运行)到我的项目中时,如下所示:
from fastapi import FastApi
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
cannot import name 'FastApi' from 'fastapi' (C:\Users\xxx\PycharmProjects\MyBank\venv\lib\site-packages\fastapi\__init__.py).
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?
我正在尝试创建一个 FAST Api,它从 PostgreSQL 数据库中现有的表中读取数据,但它给了我一个内部服务器错误。感谢您对代码可能存在的问题的指导
现有的表如下所示:
架构:testSchema
表:test_api
| ID | 电子邮件 |
|---|---|
| 1 | 测试@***.com |
| 2 | test2@***.com |
engine = sqlalchemy.create_engine("my_database_connection")
Base = declarative_base()
database = databases.Database("my_database_connection")
metadata = sqlalchemy.MetaData()
metadata.reflect(bind=engine, schema='testSchema')
test_api_tb = metadata.tables['testSchema.test_api']
class testAPI(Base):
__tablename__ = test_api_tb
id = Column(Integer, primary_key=True)
email = Column(String(256))
app = FastAPI()
@app.get("/testing_api/")
def read_users():
query = test_api_tb.select()
return database.execute(query)
Run Code Online (Sandbox Code Playgroud)
我从日志中得到的错误
RecursionError: maximum recursion depth exceeded in comparison
Run Code Online (Sandbox Code Playgroud) 以下 FastAPI 代码对我产生了意想不到的行为:
import uvicorn
from fastapi import FastAPI, Depends, Query
from typing import Optional
from pydantic.dataclasses import dataclass
app = FastAPI()
@dataclass
class Catz:
qqq: Optional[str] = Query(None, alias="q")
@app.get("/productz/")
def search_products(query: Catz = Depends(Catz) ):
products = [{"name": "Computer"}, {"name": "HDD"}]
if not query.qqq:
query.qqq = ""
return {"query": query, "results": [product for product in products if query.qqq in product["name"]]}
@dataclass
class Cats:
qqq: Optional[str] = Query(None )
@app.get("/products/")
def search_products(query: Cats = Depends(Cats) ):
products = [{"name": …Run Code Online (Sandbox Code Playgroud) 我是 API 新手,我需要能够使用请求对用户进行身份验证GET,以便自动化气流中的流程。
是否可以使用GET请求进行身份验证?例如:
hhtp://localhost:8000/transformar?user:password
Run Code Online (Sandbox Code Playgroud) fastapi ×10
python ×9
pydantic ×3
python-3.x ×3
alias ×1
api ×1
json ×1
pip ×1
postgresql ×1
pytorch ×1
rest ×1
sqlalchemy ×1