【问题标题】:FastAPI Retrieving User DataFastAPI 检索用户数据
【发布时间】:2021-02-23 03:58:11
【问题描述】:

我在创建 API 方面还很陌生,所以我对搜索什么来获得我想要的结果感到困惑。所以,本质上,我正在创建一个应用程序,当用户注册时,他们必须输入他们的姓名、电子邮件和密码。我想将他们的数据存储到数据库中(我现在有一个数组)。我可以创建一个可以添加新用户的 Post 请求。但是,我觉得这不是很适用,因为我手动插入这些值。我应该搜索/查看哪些潜在资源,以便我可以输入用户对其姓名、电子邮件和密码的回复?感谢您的帮助。

这是我的 main.py,目前为止的上下文:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

data = []
class User(BaseModel):
  userID: int
  name: str
  email: str
  password: str

# get every user
@app.get("/users")
async def get_users():
  return data

#get specific user
@app.get("/users/{user_id}")
async def get_a_user(user_id: int):
  return data[user_id - 1]

#add user
@app.post("/users")
async def add_user(user: User):
  data.append(user.dict())
  return data[-1]

【问题讨论】:

  • 您的意思是构建什么以便普通用户可以注册?例如,使用网络表单?

标签: python api fastapi


【解决方案1】:

您可以阅读、学习和重用来自FastAPIhere 的开发者的模板化全栈项目。

您可以在the FastAPI docs 上关注所有教程。

除了给你我自己使用的两个主要资源之外,你的问题有点太宽泛了。

用几个步骤来总结这个过程(或多或少):

  • 您的 fastapi 端点从前端收到 schema (pydantic)
  • 端点将该架构发送到数据库层
  • 数据库层处理将该数据修改为数据库可接受的数据(本质上是 pydantic sqlalchemy
  • sqlalchemy 然后将该数据发送到数据库

从数据库中检索数据几乎相同:

  • fastapi 端点收到数据请求
  • 查询被传递到 sqlalchemy
  • sqlalchemy 返回一个 sqlalchemy model,它被转换成一个 pydantic schema
  • 此架构然后返回到知道如何向用户显示它的前端

【讨论】:

  • ty 信息非常有见地!我会调查一下。
【解决方案2】:

如果要实现用户管理系统,请务必注意 CSRF 和 XSS 攻击:

CSRF 是针对 Web 应用程序的攻击,其中攻击者 试图诱骗经过身份验证的用户执行恶意 行动。

XSS 攻击是一种注入恶意脚本的类型 注入客户端,通常绕过浏览器的 同源策略。

来自testdrinve.io

如果你想创建一个具有良好实践的 auth 函数,有一些很好的例子:

  • 如果您想将用户的凭据存储在 MongoDB 等非关系型数据库中,您可以克隆 this project from testdriven.io authorthis one from FARM creator

  • 如果您想将 Mongodb 与 react 等前端框架结合使用,请关注 this one

  • 如果您想在关系数据库中存储用户凭据,您可以检查 Full Stack FastAPI and PostgreSQL - Base Project Generator - 全栈现代 Web 应用程序生成器,包括 FastAPI、PostgreSQL、Docker、Celery、Vue 前端、自动 HTTPS 等(由 FastAPI 的创建者 Sebastián Ramírez 开发)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-03
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多