FastAPI 服务器返回“422 无法处理的实体”- value_error.missing

2023-11-29

from http.client import responses
from random import randrange
from tkinter.tix import STATUS
from typing import Optional
from urllib import response
from fastapi import Body, FastAPI, Response ,status, HTTPException
from pydantic import BaseModel

app= FastAPI()

class Post(BaseModel):
    title: str
    content: str
    Published: bool = True
    rating: Optional[int] = None

my_post = [{"title": "title of post 1", "content": "content of post 1", "id": 2},{"title": "title of post 2","content":"content of post 2", "id":3}]

def find_post(id):
    for p in my_post:
        if p["id"] == id:
         return p

def find_index_post(id):
    for i,p in enumerate(my_post):
        if p["id"]== id:

            return i 



@app.get("/posts/{id}")
def get_posts(id: int , response: Response):
    post= find_post(id)
    if not post :

        raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail= f"post with id {id} not found bludd")


        # response.status_code=status.HTTP_404_NOT_FOUND
        # return {"message": f" post with id : {id} not found"}

    return{"here is the post": post}  

@app.delete("/posts/{id}", status_code= status.HTTP_204_NO_CONTENT)
def delete_post(id: int):
    index= find_index_post(id)
    if index == None:
        raise HTTPException(status_code= status.HTTP_404_NOT_FOUND, detail= f"post with id {id} does not exist")
    my_post.pop(index)
    
    return Response(status_code= status.HTTP_204_NO_CONTENT)

@app.put("/posts/{id}")
def update_post(id: int , post: Post):
    index = find_index_post(id)
    if index == None :
        raise HTTPException(status_code= status.HTTP_404_NOT_FOUND, detail= f"post with id {id} does not exist")
    post_dict = my_post.dict()
    post_dict["id"]= id
    my_post[index]= post_dict
    return {"message" : "updated post"}

   

其他一切都有效,但put/update函数在最后。 从字面上看,随着教程进行编码,并且有不间断的恼人问题。

Python 控制台说: 422 Unprocessable Entity.

邮递员说:

"detail": 
"loc":
"body","msg": "field required",
"type": "value_error.missing"

The 422 unprocessable entity错误准确地告诉您请求的哪一部分与预期格式不匹配或丢失。就你而言,它说body不见了。当使用 Pydantic 模型时,你本质上声明了一个JSON对象(或 Python 字典),因此,您的端点需要一个请求正文JSON 格式。因此,您发送的请求必须包含JSON与 Pydantic 模型匹配的有效负载。下面是一个使用Python请求的例子(更多细节可以在这个答案),但您也可以使用 OpenAPI/Swagger UI 自动文档http://127.0.0.1:8000/docs测试 API。另外,请看一下这个答案有关更多详细信息和示例422 unprocessable entity发布 JSON 数据时出错。

Example

app.py

from pydantic import BaseModel

class Post(BaseModel):
    title: str
    content: str
    published: bool = True
    rating: Optional[int] = None

# ...

@app.put('/posts/{id}')
def update_post(id: int , post: Post):
    pass

test.py

import requests

post_id = 2
url = f'http://127.0.0.1:8000/posts/{post_id}'
payload = {"title": "string", "content": "string", "published": True, "rating": 0}
resp = requests.put(url, json=payload)
print(resp.json())

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastAPI 服务器返回“422 无法处理的实体”- value_error.missing 的相关文章

  • 为什么我不能导入 geopandas?

    我唯一的代码行是 import geopandas 它给了我错误 OSError Could not find libspatialindex c library file 以前有人遇到过这个吗 我的脚本运行得很好 直到出现此错误 请注意
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • 具有 CRUD 功能的基于 Spring Web 的管理工具

    在 PHP Symfony 世界里有一个工具叫 Sonata Adminhttps sonata project org https sonata project org 基于 AdminLTE 模板 这是一款一体化管理工具 具有登录 菜单
  • 如何将条目中的部分文本加粗并更改其背景颜色?

    我正在创建一个基于 Tkinter 的 GUI 它有一个 Entry 小部件 我想将其文本的一部分加粗并更改其背景颜色 但我不知道我该怎么做 如果我使用文本小部件 我可以只使用标签 但看起来它们不能与条目小部件一起使用 此代码使用文本小部件
  • Python:当前目录是否自动包含在路径中?

    Python 3 4 通过阅读其他一些 SO 问题 似乎如果moduleName py文件位于当前目录之外 如果要导入它 必须将其添加到路径中sys path insert 0 path to application app folder
  • python ttk treeview:如何选择并设置焦点在一行上?

    我有一个 ttk Treeview 小部件 其中包含一些数据行 如何设置焦点并选择 突出显示 指定项目 tree focus set 什么也没做 tree selection set 0 抱怨 尽管小部件明显填充了超过零个项目 但未找到项目
  • Pandas:根据列名进行列的成对乘法

    我有以下数据框 gt gt gt df pd DataFrame ap1 X 1 2 3 4 as1 X 1 2 3 4 ap2 X 2 2 2 2 as2 X 3 3 3 3 gt gt gt df ap1 X as1 X ap2 X a
  • 我可以使用 dask 创建 multivariate_normal 矩阵吗?

    有点相关这个帖子 https stackoverflow com questions 52337612 random multivariate normal on a dask array 我正在尝试复制multivariate norma
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • 在 Windows 上使用 IPython 笔记本时出现 500 服务器错误

    我刚刚在 Windows 7 Professional 64 位上全新安装了 IPython 笔记本 我采取的步骤是 从以下位置安装 Python 3 4 1http python org http python org gt pip in
  • Python int 太大,无法放入 SQLite

    我收到错误 OverflowError Python int 太大 无法转换为 SQLite INTEGER 来自以下代码块 该文件约25GB 因此必须分部分读取 length 6128765 Works on partitions of
  • urllib2.urlopen() 是否实际获取页面?

    当我使用 urllib2 urlopen 时 我在考虑它只是为了读取标题还是实际上带回整个网页 IE 是否真的通过 urlopen 调用或 read 调用获取 HTML 页面 handle urllib2 urlopen url html
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • 在谷歌C​​olab中使用cv2.imshow()

    我正在尝试通过输入视频来对视频进行对象检测 cap cv2 VideoCapture video3 mp4 在处理部分之后 我想使用实时对象检测来显示视频 while True ret image np cap read Expand di
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • CSV 在列中查找最大值并附加新数据

    大约两个小时前 我问了一个关于从网站读取和写入数据的问题 从那时起 我花了最后两个小时试图找到一种方法来从输出的 A 列读取最大日期值 将该值与刷新的网站数据进行比较 并将任何新数据附加到 csv 文件而不覆盖旧的或创建重复项 目前 100
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt
  • 将此 MATLAB 代码转换为 Python 时我做错了什么?

    我正在努力将生成波形的 MATLAB 代码转换为 Python 就上下文而言 这是原子力显微镜带激发响应的模拟 与代码错误无关 在 MATLAB 中从 r vec 生成的图形与我在 Python 中生成的图形不同 我是否正确地将 MATLA
  • 如何识别图形线条

    我有以下格式的路径的 x y 数据 示例仅用于说明 seq p1 p2 0 20 2 3 1 20 2 4 2 20 4 4 3 22 5 5 4 22 5 6 5 23 6 2 6 23 6 3 7 23 6 4 每条路径都有多个点 它们

随机推荐

  • Ruby google_drive gem oAuth2 保存

    因此 在更新之前 有一种简单的方法可以登录谷歌驱动器并操作您的谷歌文档 使用 ruby 在您能够使用此登录您的谷歌驱动器之前 require google drive session GoogleDrive login email prot
  • setOneShotPreviewCallback 未在回调中点击 onPreviewFrame()

    我正在为我正在制作的应用程序创建视频捕获活动 并且我想捕获预览帧以用作播放按钮 我已经设置了SurfaceView up in onCreate 并连接相机的预览显示SurfaceHolder Callback private Callba
  • tsc 抛出“TS2307:找不到本地文件的模块”

    我有一个使用 TypeScript 的简单示例项目 https github com unindented ts webpack example Running tsc p with tsc版本 1 8 10 抛出以下内容 app inde
  • 在 Eclipse 中哪里存储 java 项目的资源(图像、数据文件……)?

    不确定这个基本问题是否已经得到解答 从参考资料以及在SO上找到的答案 我了解到在Eclipse中 源文件夹 是JDT将搜索源文件并编译它们的文件夹 还提到每个源文件夹可能有一个对应的文件夹来存储已编译的类 也许这就是为什么项目的通常 src
  • 如何找到可用的端口?

    我想启动一个监听端口的服务器 我可以明确指定端口并且它可以工作 但我想以自动方式找到一个端口 对此我有两个问题 我应该在哪个范围的端口号中搜索 我使用端口 12345 12346 和 12347 都很好 如何查明某个端口是否被其他软件占用
  • 如何在 mac osx 上的 sublime 中编辑 HTML.tmLanguage

    我将其更改为支持非引号 id 如下所示 div div 我找到了这个 但在查找编辑 tmLanguage 文件的位置时遇到问题 不要听杰米的回答 您永远不应该编辑 Pristine 包 相反 您可以在以下位置找到所有 Sublime Tex
  • UIActivityView 将文件附加到电子邮件

    我创建了一个UIActivityView在我的 iPad 应用程序中 但我不知道如何在发送电子邮件时附加文件 我能怎么做 我想这会对你有帮助 NSData pdfData NSData dataWithContentsOfFile pdfF
  • 如何知道网络应用程序是在浏览器上还是从团队自定义应用程序访问

    我的网络应用程序是用角度创建的 我可以检查是否从浏览器或 Teams 自定义应用程序访问 Web 应用程序 据我所知 此功能可用于在反应中创建的应用程序 例子 从 msteams react base component 导入 useTea
  • 使用 Matlab 避免科学记数法

    我已经尝试过 format long g 但像这样的数字用科学记数法表示 ans 8 80173259769825e 05 如何在不使用类似的东西的情况下避免使用科学记数法fprintf 您可以使用 sprintf 10f yourNumb
  • 如何告诉打字稿变量现在不为空?

    我是一个老派的 C C 人 刚刚学习打字稿 我有一些这样的代码 class myClass v string null null setVtoNonNull this v hi method if this v this setVtoNon
  • 如何将包含双引号的数据放入字符串变量中? [复制]

    这个问题在这里已经有答案了 可能的重复 替换 vb net 中的 如何将包含双引号的数据放入字符串变量中 2003 年 8 月 1 日 02 30 关联 我需要存储一个包含双引号中的单词的字符串 完整的字符串数据以双引号形式呈现给变量 但数
  • 如何使用微数据提取/解析 HTML

    我对微数据还很陌生 我有一个带有微数据的 HTML 字符串 我试图弄清楚是否可以使用 Microdata 和 JS 或 jQuery 动态提取所需的信息 以前有人这样做过吗 HTML 字符串示例 我正在尝试获取与 itemprop name
  • 如何在 macOS 应用程序中从应用程序注册服务?

    我正在尝试实现一个上下文菜单项 当选择文本时 该菜单项将在服务中显示 因此 例如 如果我在文本编辑中选择一个单词 我希望在上下文菜单中显示一个菜单项 Do my stuff 这会将所选单词提供给我的应用程序代码以进行进一步处理 通过谷歌搜索
  • 传单:俄罗斯芬兰边境 geoJson 叠加错误

    我正在使用来自naturalearthdata com 的 1 50m 文化矢量形状文件 我使用 ogr2ogr 通过以下命令创建 geoJson 文件 ogr2ogr f GeoJSON geo world 50m json ne 50m
  • 在resolve() 抛出错误后重定向到模板时,Angular UI 路由器出现问题

    所以我花了很长时间才理解这个问题并得出一个结论mcve 情况如下 我试图在用户未经身份验证时将其重定向到登录页面 这是非常基本的 这是代码 HTML
  • Cocoa Core Data 计算实体的有效方法

    我读了很多关于核心数据的内容 但是什么是对实体类型进行计数的有效方法 就像 SQL 可以使用 SELECT count 1 现在我刚刚通过选择全部来解决这个任务NSFetchedResultsController并得到计数NSArray 我
  • 从 Facebook 页面本身更新页面状态

    我正在尝试更新我的页面的状态 从我的页面 我已经成功地使用以下代码发布到页面墙上 require once facebook php sdk src facebook php Create our Application instance
  • 在 PHP 中链接静态方法?

    是否可以使用静态类将静态方法链接在一起 假设我想做这样的事情 value TestClass toValue 5 add 3 subtract 2 add 8 result 显然我希望 value 被分配数字 14 这可能吗 Update
  • matlab中的load命令加载空白文件

    我正在 matlab 中加载一个文件 但它被加载为一个空变量 positive 0x0 我正在使用 load positive txt 但该文件不为空 是不是出了什么问题 附 我已成功加载同一文件夹中的其他文件 我还尝试将其重命名为 Pos
  • FastAPI 服务器返回“422 无法处理的实体”- value_error.missing

    from http client import responses from random import randrange from tkinter tix import STATUS from typing import Optiona