标签: fastapi

FastAPI jsonencoder总是返回camelCase而不是snake_case

我在snake_case 中有一个数据对象,并且有一个使用snake_case 的数据库模式。我只想在数据库中创建一个新行。为了做到这一点,我必须首先序列化数据对象。不幸的是,当我使用默认的 fastAPI 序列化程序时,我总是返回一个驼峰命名法对象。当然,我可以使用另一个库将序列化的camelCase数据再次转换为snake_case,但必须有更简单的方法。


class CRUDPost(CRUDBase[Post, PostCreate, PostUpdate]):
    def create(self, db: Session, obj_in: PostCreate, created_by: UUID4) -> Post:
        logger.info(obj_in) // => obj in snake_case
        obj_in_data = jsonable_encoder(obj_in, by_alias=True)
        logger.info(obj_in_data) => obj in camelCase
        db_obj = self.model(**obj_in_data, created_by=created_by)
        db.add(db_obj)
        db.commit()
        db.refresh(db_obj)
        return db_obj
Run Code Online (Sandbox Code Playgroud)

编辑:

Camelcase 中的对象:{'leetcodeSubmissions': 0, 'interviewTimeline': 0} Snake_case 中的对象:{'leetcode_submissions': 0, 'interview_timeline': 0}

python fastapi

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

Fastapi 响应 - 反斜杠

我有变量保存sql的时间格式,并且需要返回它,但是当我将其打印回来时它被反斜杠转义了

参见示例:


@app.get("/")

def test_string():
    sql_date ='YYYY-MM-DD"HH24:MI:SS"Z"'
    print(sql_date)
#get YYYY-MM-DD"HH24:MI:SS"Z"
    return sql_date
#return "YYYY-MM-DD\"HH24:MI:SS\"Z\""

Run Code Online (Sandbox Code Playgroud)

如何在没有转义反斜杠的情况下从 fastapi 获取返回值?

python fastapi

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

如何处理异步函数之外的“等待”?

下面的函数正在调用 create_presigned_url 但我在等待中收到错误。

 def getPreSignedURL(request: Request, file: UploadFile = File(...) ):
       resp = await create_presigned_url(request,file)
       return resp
Run Code Online (Sandbox Code Playgroud)

这是我想调用的异步函数

async def create_presigned_url(bucket_name, object_name, expiration=3600):
---
return response
Run Code Online (Sandbox Code Playgroud)

python async-await fastapi

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

如何将fastapi部署到google cloud run

我有一个 fastapi 应用程序,我想将其部署到 google cloud run。

对于 gRPC python 项目,我们将其部署为

gcloud beta run deploy countries --source .
Run Code Online (Sandbox Code Playgroud)

但这并没有按预期部署。我观看了一个使用Google cloud buildpacks从源代码部署的视频。

有没有人有办法做到这一点?

我的代码就像


from typing import List
import geopandas as gpd
from fastapi import FastAPI
from geojson_pydantic.geometries import Geometry
from geojson_pydantic.features import Feature
from pydantic import BaseModel
from shapely.geometry.geo import shape
import json
import shapely

class Country(BaseModel):
    name: str
    code: str
    type: str
    geometry: Feature


app = FastAPI(
    title="Natural Earth Countries",
    description="This is a list of endpoints which you …
Run Code Online (Sandbox Code Playgroud)

python buildpack gcloud google-cloud-run fastapi

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

使用 Bytes 对象的 FastApi Post 请求出现 422 错误

我正在编写一个带有字节体的 python post 请求:

with open('srt_file.srt', 'rb') as f:
    data = f.read()

    res = requests.post(url='http://localhost:8000/api/parse/srt',
                        data=data,
                        headers={'Content-Type': 'application/octet-stream'})
Run Code Online (Sandbox Code Playgroud)

在服务器部分,我尝试解析正文:

app = FastAPI()
BaseConfig.arbitrary_types_allowed = True


class Data(BaseModel):
    data: bytes

@app.post("/api/parse/{format}", response_model=CaptionJson)
async def parse_input(format: str, data: Data) -> CaptionJson:
    ...
Run Code Online (Sandbox Code Playgroud)

但是,我收到了 422 错误: {"detail":[{"loc":["body"],"msg":"value is not a valid dict","type":"type_error.dict"}]}

那么我的代码哪里出了问题,我应该如何修复它?预先感谢大家的帮助!

python python-requests fastapi

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

如何将socket.io挂载到fastapi应用程序并向所有连接的客户端发送广播

我尝试创建使用 websockets 并可以向所有连接的客户端广播消息的 fastapi 应用程序。我发现 websockets 不可能做到这一点,但找到了出色的库 - socket.io。但是我不确定如何使用它并将其与我现有的 fastapi 应用程序集成。

python websocket socket.io fastapi

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

FastApi:422 无法处理的实体

我在尝试接受迂腐模型时遇到此错误。经过一段时间的调试后,我相信问题出在接受上CodeCreate

悬垂模型

class BaseCode(BaseModel):
    index: Optional[int] = Field(None)
    email: EmailStr
    gen_time: datetime
    expire_time: datetime


class CodeCreate(BaseCode):
    code: int
    used_time: Optional[datetime] = Field(None)

    class Config:
        orm_mode = True

class Message(BaseModel):
    message: str
Run Code Online (Sandbox Code Playgroud)

代码 ORM

class Code(Base):
    __tablename__ = 'code'

    index = Column(Integer, primary_key=True, autoincrement=True)
    code = Column(Integer)
    email = Column(String, ForeignKey('user.email'))
    gen_time = Column(DateTime)
    expire_time = Column(DateTime)
    used_time = Column(DateTime, nullable=True)
Run Code Online (Sandbox Code Playgroud)

处理程序

@app.post('/verify-code', response_model=schemas.Message, responses={404: {"model": schemas.Message}, 406: {"model": schemas.Message}})
async def verify_code(code: schemas.CodeCreate, response: Response, device_name: str = Body(..., …
Run Code Online (Sandbox Code Playgroud)

python http-status-code-422 pydantic fastapi

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

如何在 React 上渲染来自 FastAPI 服务器的 Streamable 图像?

我想使用从 FastAPI 后端返回的 React 来渲染图像StreamingResponse。图像是数组的形式numpy,是cv2对象类型。

@app.post("/predict")
async def root(file: UploadFile = File(...)):
    global model
    global store_coordinates
    global store_faces
    global store_mesh

    content = await file.read()
    nparr = np.fromstring(content, np.uint8)
    bg_img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
    ......................
    for i in range(len(store_coordinates)):
            x, y, w, h = store_coordinates[i]
            bg_img [b:b + d, a:a + c] = store_mesh[i]
    
    res,im_png = cv2.imencode(".png", bg_img)
    return StreamingResponse(io.BytesIO(im_png.tobytes()), media_type="image/png")
Run Code Online (Sandbox Code Playgroud)

在这里,我创建了一个 API 端点,其中使用POST请求接收上传的图像,并StreamableResponse(Image)返回 a。如何在 React 前端渲染这个返回的响应?

反应代码:

import React, { Component …
Run Code Online (Sandbox Code Playgroud)

javascript python image reactjs fastapi

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

React 不显示来自 FastAPI 后端应用程序的 POST 响应

我有一个简单的 React Ui,它应该从中获取 json 文件localhost:8000/todo并在localhost:3000. 这是所需的输出: 在此输入图像描述

然而,这就是我得到的: 在此输入图像描述

所以,这两行是“读一本书”。和“骑自行车环城”。没有显示。这两行应该来自localhost:8000/todo类型JSON信息。我觉得我可以从 获取数据localhost:8000/todo,但我不知道如何在 中显示它们localhost:3000,这是我的输出。

这是我为此提供的功能:

export default function Todos() {
  const [todos, setTodos] = useState([])
  const fetchTodos = async () => {
    const response = await fetch("http://localhost:8000/todo")
    const todos = await response.json()
    setTodos(todos.data)
  }
  useEffect(() => {
    fetchTodos()
  }, [])
  return (
    <TodosContext.Provider value={{todos, fetchTodos}}>
      <AddTodo />  
      <Stack spacing={5}>
        {todos.map((todo) => (
          <b>{todo.item}</b>
        ))}
      </Stack>
    </TodosContext.Provider>
  )
}
Run Code Online (Sandbox Code Playgroud)

{todos.item}是应该打印项目的部分,但它没有!

这是控制台日志信息: 在此输入图像描述 在此输入图像描述

以下是 …

python cors reactjs fastapi

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

pydantic:如何选择字段的类型?

我有一个 FastAPI 应用程序,我需要创建一个 Car 类,其中属性Wheelspeed可以采用 intstr 类型。怎么做?此代码不起作用,因为Wheelspeed将只有整数类型(第二次打印中不是 str ):

from pydantic import BaseModel


class Car(BaseModel):
    wheel: int | str
    speed: int | str


bmw = Car(wheel=4, speed=250)
mercedes = Car(wheel='4', speed='200')

print(type(bmw.wheel), type(bmw.speed))
print(type(mercedes.wheel), type(mercedes.speed))
Run Code Online (Sandbox Code Playgroud)

结果是:

<class 'int'> <class 'int'>
<class 'int'> <class 'int'>
Run Code Online (Sandbox Code Playgroud)

python python-3.x pydantic fastapi

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