区块链核心技术-第二章代码解析

166 阅读3分钟

代码解析:

python
复制
from flask import Flask
from flask import request  # 引入此依赖,可以接收HTTP请求信息
import services
  • from flask import Flask:从 Flask 框架中导入 Flask 类,用于创建 Flask 应用。
  • from flask import request:导入 request 对象,它允许我们在 Flask 应用中接收和处理 HTTP 请求。request 包含了所有关于请求的信息,如请求方法、参数、数据等。
  • import services:导入名为 services 的自定义模块。这个模块可能包含哈希加密或其他服务函数,用于处理特定的任务。
python
复制
app = Flask(__name__)
  • 创建一个 Flask 应用实例 app__name__ 是 Python 内置的变量,表示当前模块的名称。Flask 使用它来确定应用的根路径。
python
复制
@app.route('/')
def hello_world():
    return 'Hello World!'
  • @app.route('/') :定义了一个路由装饰器,表示当用户访问根路径 '/' 时,调用 hello_world() 函数。
  • def hello_world():hello_world 函数会返回字符串 'Hello World!',当用户访问根路径时,服务器会返回此字符串作为响应。
python
复制
@app.route('/my_get', methods=['GET'])
def my_get():
    arg1 = request.args.get("arg1")  # 使用request.args可以接收GET请求的参数
    arg2 = request.args.get("arg2")
    return f"接收到参数,分别为: arg1: {arg1} , arg2: {arg2}"  # HTTP请求对应的相应
  • @app.route('/my_get', methods=['GET']) :定义一个新的路由 /my_get,并指定它只接收 GET 请求。

  • def my_get():my_get 函数用来处理 /my_get 路径的 GET 请求。

    • request.args.get("arg1")request.args.get("arg2") :使用 request.args.get() 方法获取 GET 请求中的参数(arg1arg2)。
    • 返回响应:通过 f"接收到参数,分别为: arg1: {arg1} , arg2: {arg2}" 返回获取到的参数作为响应。
python
复制
@app.route('/my_post', methods=['POST'])
def my_post():
    # 通过request.json接收前端以POST形式请求的内容
    get_data = request.json
    return f"接收到请求数据,内容为:{get_data}"
  • @app.route('/my_post', methods=['POST']) :定义一个新的路由 /my_post,并指定它只接收 POST 请求。

  • def my_post():my_post 函数用来处理 /my_post 路径的 POST 请求。

    • request.jsonrequest.json 用于获取 POST 请求中以 JSON 格式发送的数据。
    • 返回响应:通过 f"接收到请求数据,内容为:{get_data}" 返回接收到的数据作为响应。
python
复制
@app.route('/encrypt', methods=['GET'])
def encrypt():
    """
    哈希函数加密
    :return: 加密的字典对象
    """
    data = request.args.get('data')
    res = services.hash_encrypt(data)
    return {
        'res': res
    }
  • @app.route('/encrypt', methods=['GET']) :定义一个新的路由 /encrypt,并指定它只接收 GET 请求。

  • def encrypt():encrypt 函数用来处理 /encrypt 路径的 GET 请求。

    • request.args.get('data') :获取 GET 请求中传入的参数 data,通常是待加密的数据。
    • services.hash_encrypt(data) :调用 services 模块中的 hash_encrypt() 函数进行哈希加密(假设 hash_encrypt 是该函数的名称,它可能会返回加密后的数据)。
    • 返回响应:返回一个包含加密结果的字典对象 {'res': res},其中 res 是加密结果。
python
复制
if __name__ == '__main__':
    app.run()
  • if __name__ == '__main__': :这段代码确保只有在直接运行这个脚本时,才会启动 Flask 应用,而不是在它被导入为模块时启动。
  • app.run() :启动 Flask 开发服务器,监听本地的 5000 端口,等待并处理请求。

总结:

  • 这段代码实现了一个简单的 Flask 应用,包含了 3 个路由://my_get/my_post,每个路由都处理不同类型的 HTTP 请求(GET 和 POST)。
  • /my_get 用于接收 GET 请求并返回查询参数;
  • /my_post 用于接收 POST 请求并返回请求的数据;
  • /encrypt 接收 GET 请求并对数据进行哈希加密处理。
  • 通过学习这段代码,你可以理解 Flask 中如何处理 HTTP 请求和响应、如何从请求中获取参数以及如何与外部函数进行交互。