【问题标题】:I am Learning FastApi and i am facing this issue我正在学习 FastApi,我正面临这个问题
【发布时间】:2021-05-28 20:41:27
【问题描述】:

我正在尝试创建一个product API,但在向 API 发送请求后我遇到了这个问题:

new_product = models.products(name=requests.name, price=requests.price)
AttributeError: module 'fastapi.requests' has no attribute 'name'

这是我的代码:

main.py

from fastapi import FastAPI, Depends, requests
from typing import Optional
import schemas, models
from database import engine, SessionLocal
from sqlalchemy.orm import Session

models.Base.metadata.create_all(bind=engine)

app = FastAPI()

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

@app.post('/product')
def create(product: schemas.Products, db : Session = Depends(get_db)):
    new_product = models.products(name=requests.name, price=requests.price)
    db.add(new_product)
    db.commit()
    db.refresh(new_product)
    return new_product

models.py

from sqlalchemy import Column, Integer, String
from database import Base

class products(Base):
    __tablename__ = 'products'
    id = Column(Integer, primary_key=True, index=True)
    name = Column(String)
    price = Column(Integer)    

数据库.py

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

SQL_URL = 'sqlite:/// product.db'

engine = create_engine(SQL_URL, connect_args={"check_same_thread": False})

SessionLocal = sessionmaker(bind=engine, autocommit=False, autoflush=False)

Base = declarative_base()

schemas.py

from pydantic import BaseModel

class Products(BaseModel):
    name: str
    price: int

【问题讨论】:

    标签: python python-3.x sqlalchemy fastapi


    【解决方案1】:

    如果您尝试将数据发送到 API 端点,您应该使用 product.nameproduct.price,而不是 requests.XXX

    您正在从 FastAPI (from fastapi import ... requests) 导入 requests,这与您的 API 完全无关!

    【讨论】:

      【解决方案2】:

      就像 Jason 说的那样,最好从架构中获取信息,但是如果您希望所有请求都包括正文、标头……等,您需要请求无请求

      from fastapi import  Request
      @app.post("/")
      async def fast_service(request: Request):
          body =await request.body()
      
          return 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-14
        • 1970-01-01
        • 2016-03-19
        • 1970-01-01
        • 1970-01-01
        • 2017-04-16
        • 1970-01-01
        • 2019-09-23
        相关资源
        最近更新 更多