标签 FastAPI 下的文章

logo-teal.png

在Python中创建一个简单的API,您可以使用一个轻量级的Web框架,比如Flask。以下是一个示例,展示如何创建一个基本的API,返回一个JSON响应:

Flask构建一个API例子

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/hello', methods=['GET'])
def hello():
    data = {
        'message': '你好,世界!'
    }
    return jsonify(data)

if __name__ == '__main__':
    app.run()

在这个例子中,我们使用Flask(__name__)定义一个Flask应用程序。然后,我们使用@app.route装饰器定义了一个路由/api/hello,指定HTTP方法为GET。当通过GET请求访问/api/hello端点时,将执行hello函数。

在hello函数内部,我们创建一个包含简单消息的字典data。然后,我们使用jsonify函数将字典转换为JSON响应。

最后,我们使用app.run()运行Flask应用程序。

为了测试API,您可以运行Python脚本,它将启动一个本地开发服务器。您可以在http://localhost:5000/api/hello上访问API。响应将是一个包含消息"你好,世界!"的JSON对象。

这是一个基本的示例,帮助您开始使用Flask创建API。您可以添加更多的路由、处理不同的HTTP方法,并根据具体需求执行各种操作。

使用FastAPI构建一个API,随机生成一个偶数

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。

from fastapi import FastAPI
from random import randint

app = FastAPI()

@app.get("/api/random_even")
async def generate_random_even():
    number = randint(0, 100)
    if number % 2 != 0:
        number += 1
    return {"random_even": number}

在这个例子中,我们从fastapi模块导入FastAPI,从random模块导入randint。我们使用FastAPI()创建一个FastAPI应用程序。

通过使用@app.get装饰器,我们定义了一个路由/api/random_even,处理该端点的GET请求。在generate_random_even函数内部,我们使用randint(0, 100)生成一个0到100之间的随机数。如果生成的数字不是偶数(即奇数),我们将其加1,使其变为偶数。

最后,我们返回一个包含生成的随机偶数的JSON响应。

要测试这个API,您可以运行Python脚本,FastAPI应用程序将启动一个本地开发服务器。您可以在http://localhost:8000/api/random_even上访问API。每次访问这个端点时,它都会生成一个新的随机偶数。

注意:在运行脚本之前,确保已通过pip install fastapi uvicorn安装了FastAPI及其所需的依赖项。然后,您可以使用uvicorn main:app --reload来启动应用程序,假设脚本的名称为main.py。

pip install fastapi uvicorn
uvicorn main:app --reload

浏览器访问该API

http://localhost:8000/api/random_even

指定ip和端口运行fastapi应用

uvicorn main:app --host 192.168.1.100 --port 8000
uvicorn main:app --host 0.0.0.0.0 --port 7878 ## 使用不同的端口

FastAPI传入参数

from fastapi import FastAPI

app = FastAPI()

@app.get("/users/{user_id}/items/{item_id}")
def get_user_item(user_id: int, item_id: str):
    return {"user_id": user_id, "item_id": item_id}

url指定参数,传入函数

根据函数的参数自动匹配url里参数?

from fastapi import FastAPI

app = FastAPI()

@app.get("/items")
def get_items(item_id: int, q: str):
    return {"item_id": item_id, "q": q}

如何构建自己的汇率API?

拓展?使用现有的api,作一些封装,再转发除去实现自己的api服务