首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

FastAPI,一款实用的web框架

更少bug:减少约 40% 的人为(开发者)导致错误。 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。 简单:设计的易于使用学习,阅读文档的时间更短。 简短:使代码重复最小化。...开发 API 时,「路径」是用来分离「关注点」「资源」的主要手段。 操作 这里的「操作」指的是一种 HTTP「方法」。...下列之一: POST GET PUT DELETE ...以及更少见的几种: OPTIONS HEAD PATCH TRACE 在 HTTP 协议中,你可以使用以上的其中一种(或多种)「方法」与每个路径进行通信...在开发 API 时,你通常使用特定的 HTTP 方法去执行特定的行为。 通常使用: POST:创建数据。 GET:读取数据。 PUT:更新数据。 DELETE:删除数据。...你也可以使用其他的操作: @app.post() @app.put() @app.delete() 以及更少见的: @app.options() @app.head() @app.patch() @app.trace

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

FastAPI】请求体

FastAPI 中,请求体(Request Body)是通过请求发送的数据,通常用于传递客户端提交的信息。FastAPI 使得处理请求体变得非常容易。 请求体是客户端发送给 API 的数据。...响应体是 API 发送给客户端的数据 注:不能使用 GET 操作(HTTP 方法)发送请求体。 要发送数据,你必须使用下列方法之一:POST(较常见)、PUT、DELETE 或 PATCH。...如果数据无效,将返回一条清晰易读的错误信息,指出不正确数据的确切位置内容。 将接收的数据赋值到参数 item 中。...请求体 + 路径参数 + 查询参数 同时声明请求体、路径参数查询参数。 FastAPI 会识别它们中的每一个,并从正确的位置获取数据。...() @app.put("/items/{item_id}") async def update_item(item_id: int, item: Item, q: Union[str, None]

12910

用ASP.NET Core 2.0 建立规范的 REST API -- DELETE, UPDATE, PATCH Log

POSTGET,这篇要介绍建立Richardson成熟度2级的DELETE, PUT, PATCH....因为如果是500错误的话,就意味着是服务器出现错误,而这实际上是API消费者(客户端)提交的数据有问题,是客户端的错误。所以返回的状态码应该是 4xx 系列。...由于ASP.NET Core并没有内置的帮助方法可以返回422验证错误信息,所以我们先建立一个类用于返回 422 验证错误信息,它继承于ObjectResult: ?...PATCH的验证 PATCH与POSTPUT的验证稍微有一点不同,首先看一个例子,删除一个不存在的属性的值: ? 这个会导致返回500错误,这是不对的。...这里使用了500作为Log的EventId比较合适,毕竟是500错误。 我认为可以把Action里面返回500状态码的部分改成抛出异常。 然后我修改一下PATCH,以便能抛出一个异常: ?

1.8K20

FastAPI 学习之路(二十一)请求体 - 更新数据

(十九)处理错误 FastAPI 学习之路(二十)接口文档配置相关 前言 我们之前分享一些配置,这次分享一下请求体去更新数据。...正文 我们都知道,去创建请求体,更新数据我们用PUT请求,我们去试着更新下数据。 我们有一组数据,我们要更新描述。...tax: float = 10.5 tags: List[str] = [] items = { "one": {"name": "苹果", "price": 50.2} } @app.put...也可以使用PATCH; 提取存储的数据; 把数据放入 Pydantic 模型; 生成不含输入模型默认值的 dict (使用 exclude_unset 参数); 只更新用户设置过的值,不用模型中的默认值覆盖已存储过的值...这种方式与 Pydantic 模型的 .dict() 方法类似,但能确保把值转换为适配 JSON 的数据类型,例如, 把 datetime 转换为 str 。

84750

FastAPI(8)- 请求体 Request Body

前言 接口传参方式之一:通过发送请求体(Request Body)来传递请求数据 在 FastAPI,提倡使用 Pydantic 模型来定义请求体 这篇文章会详细讲不使用 Pydantic 使用 Pydantic...发送请求体的栗子 注意 请求体并不是只有 POST 请求有,只不过 POST 更常见 在 PUT、DELETE、PATCH 请求中都可以使用请求体 其实,在 GET 请求中也可以用请求体,不过仅适用于非常极端的情况下...会对每一个键值对都做数据校验,校验失败会有友好的错误提示 正确传参的请求结果 校验失败的请求结果 友好的错误提示啊~ 使用 Pydantic 模型(建议使用) 实际栗子 from fastapi...做了这几件事 将请求体识别为 JSON 字符串 将字段值转换相应的类型(若有需要) 验证数据,如果验证失败,会返回一个清晰的错误,准确指出错误数据的位置信息 item 会接收到完整的请求体数据,拥有所有属性及其类型...model 的 JSON Schema 会成为 Swagger APi 文档的一部分 示例值部分 IDE 智能提示 因为知道 name 属性的类型是 str,所以 IDE 会智能提示 str 内置的方法

3.9K20

FastAPI学习-2.访问路径(路由)

开发 API 时,「路径」是用来分离「关注点」「资源」的主要手段。 操作 这里的「操作」指的是一种 HTTP「方法」。...下列之一: POST GET PUT DELETE 以及更少见的几种: OPTIONS HEAD PATCH TRACE 在 HTTP 协议中,你可以使用以上的其中一种(或多种)「方法」与每个路径进行通信...在开发 API 时,你通常使用特定的 HTTP 方法去执行特定的行为。 通常使用: POST: 创建数据。 GET: 读取数据。 PUT: 更新数据。 DELETE: 删除数据。...@app.post() @app.put() @app.delete() 以及更少见的: @app.options() @app.head() @app.patch() @app.trace() 步骤...还有许多其他将会自动转换为 JSON 的对象模型(包括 ORM 对象等)。尝试下使用你最喜欢的一种,它很有可能已经被支持。 总结 导入 FastAPI。 创建一个 app 实例。

46430

FastAPI(2)- 快速入门

的属性及其具有的数据类型 比如:某个属性的数据类型是什么,有没有默认值,是不是必填,作用是什么 JSON Schema OpenAPI 会为 API 定义 API Schema,一般会包括 API 发送接收的数据的定义...POST GET PUT DELETE OPTIONS HEAD PATCH TRACE 在 HTTP 协议中,可以使用以上的其中一种(或多种)「方法」与每个路径进行通信.../ 使用 get 请求 其他请求方法的装饰器 @app.post() @app.put() @app.delete() @app.options() @app.head() @app.patch()...@app.trace() 第四步:定义路径操作函数 async def root(): 这就是一个普通的 Python 函数 每当 FastAPI 接收一个使用 GET 方法访问路径为 的请求时这个函数会被调用...message": "Hello World"} 可以返回一个 dict、list,也可以是 str、int 单个值 还可以返回 Pydantic 模型(后面详解) 还可以是其他会自动转换为 JSON 的对象模型

1.5K30

FastAPI从入门到实战(14)——JSON编码兼容与更新请求

针对数据格式类型问题,fastapi内置了一个很好的转换器,本文就相关内容主要记录编码请求更新相关内容; json兼容编码器 class Animal(BaseModel): name...age': 21, 'birthday': '2022-12-02T18:31:38.373484'} 现在我们的请求大多都是Pydantic模型类的,在实际的应用中并不会兼容,例如存储到数据库中,利用fastapi...更新数据很简单,接受一个同类型的请求体,将接收的请求体进行解码,就是进行对应的类型转换(基于上面的JSON编码器),然后进行数据存储: PATCH请求更新数据 @app08.patch("/stu08.../citypatch/{cityid}") async def stu08_city_patch( city: City, cityid: int = Path(ge=1...,实际应用中,还是PUT方法用的多,具体过程参看上面代码的注释; ---- 感谢阅读!

59910

全面拥抱FastApi —三大参数及验证

先看下 FastAPI 有哪些突出特点,官网介绍如下: 快速:非常高的性能,性能可与NodeJSGo相媲美(感谢Starlette Pydantic)。现有最快的Python框架之一。...更少的错误:减少约40%的人为错误(开发人员)。 直观:强大的编辑器支持,程序调试时间更少。 简易:易于使用学习,减少阅读文档的时间。 短:最小化重复代码,每个参数声明中的多个功能,减少编码错误。...其中还有一个是路径参数:item_id, str 类型 请求体参数 要发送请求正文,必须使用一个:POST, PUT,DELETE或PATCH,需导入 Pydantic 的 BaseModel from...,指出错误数据的确切位置来源 在参数中接收收到的数据 item,并能获取所有属性及所有编辑器的支持 ?...str description: str = None price: float tax: float = None app = FastAPI() @app.put("/items

5.3K30

FastAPI--路由(2)

一、概述 路由方法有 GET, POST, PUT, PATCH, DELETE OPTIONS。...import uvicorn from fastapi import FastAPI app = FastAPI() @app.post("/") @app.put("/") @app.delete...然后就是bottle(微型Web框架)一样也可以对传入的参数进行数据验证的定义: 如: import uvicorn from fastapi import FastAPI app = FastAPI...提示错误信息,值不是整形,HTTP状态码为:422 多路径查询参数 所谓的多路径查询参数就是URL上包含了有动态的参数,还有需要通过&分隔符提交的参数,这情况,通常再GET提交的中也很常见,那么如何处理呐...路径参数查询参数的必选可选 参数的可选必选主要是通过是否给默认值来决定的,如: import uvicorn from fastapi import FastAPI app = FastAPI(

2.2K20

FastAPI 学习之路(十五)响应状态码

FastAPI 系列文章: FastAPI 学习之路(一) FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四)使用pydantic模型做请求体...FastAPI 学习之路(五) FastAPI 学习之路(六) FastAPI 学习之路(七) FastAPI 学习之路(八) FastAPI 学习之路(九) FastAPI 学习之路(十)...在以下任意的接口路径中使用 status_code 参数来声明用于响应的 HTTP 状态码: @app.get() @app.post() @app.put() @app.delete() 我们可以简单的看下...400 及以上状态码用于「客户端错误」响应。这些可能是你第二常使用的类型。 一个例子是 404,用于「未找到」响应。 对于来自客户端的一般错误,你可以只使用 400。...500 及以上状态码用于服务器端错误。你几乎永远不会直接使用它们。当你的应用程序代码或服务器中的某些部分出现问题时,它将自动返回这些状态代码之一。

94260

FastAPI 学习之路(一)

前言 之前的文章中fastapi--高性能web开发框架,我们对于fastapi有一个简单的了解,那么我们应该如何学习掌握它呢,我们会有一系列的分享,去带着大家去学习这个优秀的框架。...: @app.post() @app.put() @app.delete() 以及更少见的: @app.options() @app.head()...@app.patch() @app.trace() 这些对应都是请求方式 ''' 第 四步:定义路径操作函数 第五步:返回内容 #函数在路径装饰器的下方 #写法一 @app.get("/") async...这里要说明的,上面app以及包括main.py还有方法的名称,大家都可以自己自定义,自定义后启动,就按照命令改成自己可以用的即可。...接口直接给我们返回了,方法不被允许,那么我们可以用postman来试下。 ? 这次我们使用post直接返回了,我们定义的post的字符串。

1.3K30

五分钟搞懂hashCode()equals()方法的原理常见的误区错误出现的原因

,必须清楚的理解,但实际上,甚至很多经验丰富的Java开发者有时候也没有真正搞清楚这两个方法的使用原理。...我们接下来将用这篇文章指出在使用hashcodeequals方法时,经常范的错误,并指出如何正确的使用这两个方法,以及这两个方法工作的原理。...(a1, 10); map.put(a2, 20); System.out.println(map.get(new Apple("Green")));...错误出现的原因 这个问题引起的原因是因为我们没有重写“hashCode”方法,这就需要我们深入理解equals方法hashCode方法的原理: 如果两个对象是相等的,那么他们必须拥有一样的hashcode...Paste_Image.png ** 切记,一定要同时重写hashCodeequals方法 **

31550
领券