尝试构建自己的API?
在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服务