标签: fastapi

FastApi pydantic 如何验证电子邮件

我正在使用 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它,但它已被弃用。

python pydantic fastapi

1
推荐指数
1
解决办法
6885
查看次数

HTTPS POST 使用 python 请求查询 FastAPI

我正在尝试使用 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)

python api python-requests pytorch fastapi

0
推荐指数
1
解决办法
493
查看次数

AttributeError: 'Blog' 对象没有属性 'items' - FastAPI

我正在尝试使用 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)

python sqlalchemy python-3.x fastapi

0
推荐指数
1
解决办法
613
查看次数

名称为“date”的字段在 pydantic 中不起作用

我正在使用 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)

python pydantic fastapi

0
推荐指数
1
解决办法
6962
查看次数

如何正确安装fastapi?

我想在 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)

python pip fastapi

0
推荐指数
1
解决办法
1万
查看次数

FASTAPI:从发布请求读取时,Body(...) 中的“(..)”是什么?

我正在尝试使用 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)

python json python-3.x fastapi

0
推荐指数
1
解决办法
836
查看次数

FastAPI 错误:无法从“fastapi”导入名称“FastApi”

我想使用 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)

有人能帮我吗?

python fastapi

0
推荐指数
1
解决办法
1万
查看次数

Fastapi 从 postgreSQL 中的现有数据库表中读取

我正在尝试创建一个 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)

python postgresql rest fastapi

0
推荐指数
1
解决办法
8215
查看次数

数据类的 FastAPI 查询不适用于别名

以下 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)

alias python-3.x python-dataclasses pydantic fastapi

0
推荐指数
1
解决办法
1146
查看次数

如何在 FastAPI 中使用 GET 请求对用户进行身份验证?

我是 API 新手,我需要能够使用请求对用户进行身份验证GET,以便自动化气流中的流程。

是否可以使用GET请求进行身份验证?例如:

hhtp://localhost:8000/transformar?user:password
Run Code Online (Sandbox Code Playgroud)

python authentication fastapi

0
推荐指数
1
解决办法
774
查看次数