import flask
import json
server=flask.Flask("abc")
@server.route("/user/list",methods=["get"])
def user_list():
    json_dict={
    "code": 0,
    "msg": "操作成功",
    "data": {
        "id": 8877,
        "create_time": "2023-12-01 22:08:57",
        "update_time": "2023-12-01 22:08:57",
        "phone": "1550000000",
        "email": "3332@qq.com",
        "nick": "wuhh",
        "roles": [],
        "head_url": "http://test/api/default.jpg"
     }
    }
    return json.dumps(json_dict)
server.run(debug=True,port=8888)
 
![]()
 
syntax="proto3";
package user_proto;
message UserData {
int32 id=1;
string create_time = 2;
string update_time = 3;
string phone = 4;
string email = 5;
string nick = 6;
repeated string roles = 7;
string head_url = 8;
}
message UserResponse {
    int32 code = 1;
    string msg = 2;
    UserData data = 3;
}
 
protoc --python_out=. user.proto
from flask import Flask, Response
import json
import user_pb2
server=Flask("abc")
@server.route("/user/list",methods=["get"])
def user_list():
    json_dict={
    "code": 0,
    "msg": "操作成功",
    "data": {
        "id": 8877,
        "create_time": "2023-12-01 22:08:57",
        "update_time": "2023-12-01 22:08:57",
        "phone": "1550000000",
        "email": "3332@qq.com",
        "nick": "wuhh",
        "roles": [],
        "head_url": "http://test/api/default.jpg"
     }
    }
    # 创建 protobuf 消息实例并填充数据
    user_data=user_pb2.UserData()
    user_data.id=8877
    user_data.create_time="2023-12-01 22:08:57"
    user_data.update_time="2023-12-01 22:08:57"
    user_data.phone="1550000000"
    user_data.email="3332@qq.com"
    user_data.nick="wuhh"
    role_list=[12,34]
    user_data.roles.append(str(role_list))
    user_data.head_url="http://test/api/default.jpg"
    response=user_pb2.UserResponse()
    response.code=0
    response.msg = "操作成功";
    response.data.CopyFrom(user_data);
    #  序列化protobuf消息为字节串
    serialized_response=response.SerializeToString()
    # 创建一个Flask响应,设置内容类型和正文
    return Response(serialized_response,mimetype='application/octet-stream')
server.run(debug=True,port=8888)
 
import requests
import user_pb2
from google.protobuf.json_format import MessageToJson
req=requests.request(method="get",url="http://127.0.0.1:8888/user/list",headers={"Content-Type":"application/octet-stream"})
protobuf_data =req.content  # 从接口接收到的 protobuf 序列化数据
# print(protobuf_data)
def deserialize_protobuf_data(protobuf_data):
    # protobuf_data 是从某个接口接收到的 protobuf 序列化后的字节串
    message = user_pb2.UserResponse()  # 替换为你在 .proto 文件中定义的消息类型
    message.ParseFromString(protobuf_data)  # 从字节串中反序列化数据
    return message
person = deserialize_protobuf_data(protobuf_data)
json_data=MessageToJson(person)
print(json_data)