FastAPI 路径参数
现代网络框架使用路由或端点作为URL的一部分,而不是基于文件的URL。这有助于用户更有效地记住应用程序的URL。在FastAPI中,它被称为路径。路径或路由是URL中第一个’/’后面的部分。
例如,在下面的URL中。
的路径或路线将是
在FastAPI中,这样的路径字符串被作为参数提供给操作装饰器。这里的操作指的是浏览器用来发送数据的HTTP动词。这些操作包括GET、PUT等。操作装饰器(例如,@app.get(“/”))后面紧跟着一个函数,当指定的URL被访问时,这个函数就会被执行。在下面的例子中 –
这里,(“/”)是路径,get是操作,@app.get(“/”)是路径操作装饰器,而它下面的index()函数被称为路径操作函数。
以下任何一个HTTP动词都可以作为操作使用。
编号:Sr.No. | 方法和描述 |
---|---|
1 | GET 以未加密的形式向服务器发送数据。最常见的方法。 |
2 | HEAD 与GET相同,但没有响应体。 |
3 | POST 用来向服务器发送HTML表单数据。由POST方法收到的数据不会被服务器缓存。 |
4 | PUT 用上传的内容替换目标资源的所有当前表现。 |
5 | DELETE 删除由URL给出的目标资源的所有当前表示。 |
函数定义中的 async 关键字告诉FastAPI,它将被异步运行,即不阻塞当前执行线程。然而,也可以在没有async前缀的情况下定义一个路径操作函数。
这个装饰的函数返回一个JSON响应。尽管它可以返回几乎所有的Python对象,但它将被自动转换为JSON。在本教程的后面,我们将看到这样一个函数如何返回 Pydantic 模型对象。
URL的端点或路径可以有一个或多个变量参数。它们可以通过使用Python的字符串格式化符号来接受。在上面的URL http://localhost:8000/hello/TutorialsPoint 的例子中,最后一个值可能会在每个客户端请求中发生变化。这个变量参数可以在路径中定义的变量中接受,并传递给绑定到操作装饰器的函数中定义的形式参数。
例子
在路径中添加另一个带有变量参数的路径装饰器,并将 hello() 函数与名称参数绑定。按照下面的方法修改main.py的内容。
启动Uvicorn服务器并访问http://localhost:8000/hello/Tutorialspoint URL。浏览器显示以下JSON响应。
将变量路径参数改为其他参数,如http://localhost:8000/hello/Python,这样浏览器就会显示–。
检查OpenAPI文档
现在,如果我们通过输入URL作为http://localhost:8000/docs,检查OpenAPI文档,它将显示两条路由和它们各自的视图功能。点击/hello/{name}按钮下面的尝试按钮,给Tutorialspoint作为名称参数的描述值,然后点击执行按钮。
然后,它将显示 Curl 命令、 请求的URL 和服务器响应的细节,包括响应体和响应头。
一个路由可以有多个参数,用”/”符号分隔。
在这种情况下, /hello 是路线,后面是两个放在大括号里的参数。如果浏览器地址栏中给出的URL是http://localhost:8000/hello/Ravi/20,Ravi和20的数据将被分别分配给变量name和age。浏览器会显示以下的JSON响应 –
带类型的路径参数
你可以对要装饰的函数参数使用Python的类型提示。在这种情况下,将name定义为str,age定义为int。
如果类型不匹配,这将导致浏览器在JSON响应中显示一个HTTP错误信息。尝试输入http://localhost:8000/hello/20/Ravi 作为URL。浏览器的响应将如下 –
原因很明显,因为 年龄 是整数,不能接受字符串值。这也将反映在Swagger用户界面(OpenAPI)文档中。