PB在HTTP协议中怎么用
admin
2023-07-25 18:40:07
0

客户端代码

本例中分别演示了http+json的通信方式与http+Protocol Buffer的通信方式;
本例中的测试用例使用qtaf框架进行管理,实际应用可以视需求而定,只关注核心逻辑即可;

# -*- coding: utf-8 -*-

from testbase.testcase import TestCase
from testbase import datadrive
from testbase.retry import Retry
import requests,json
import sys
from test_pb2 import Person

class Case001(TestCase):
    '''http_client
    '''
    owner = "enbowang"
    status = TestCase.EnumStatus.Ready
    priority = TestCase.EnumPriority.Normal
    timeout = 1

    #从这里开始进入核心逻辑
    def run_test(self):
        #json方式模拟
        self.start_step("http+json 请求测试")
        url = "http://127.0.0.1:8080/http_json"
        body = b'{"name":"xx.xxx"}'
        response = requests.post(url,data=body)
        self.log_info("body:" + str(body))
        self.log_info('响应状态:'+ str(response.status_code))
        self.log_info('响应内容:'+ str(response.text))

        #Protocol Buffer方式模拟,PB格式定义请见该系列上一篇文章
        self.start_step("http+Protocol Buffer 请求测试")
        url = "http://127.0.0.1:8080/http_proto"
        person = Person()
        person.name = "xx.xxx"
        person.id = 123456
        body = person.SerializeToString()
        response = requests.post(url,data=body)
        self.log_info("body:" + str(body))
        self.log_info('响应状态:'+ str(response.status_code))
        self.log_info('响应内容:'+ str(response.text))

if __name__ == '__main__':
    Case001().debug_run()

服务端代码

服务端使用webpy实现
分别实现了json数据的解析与PB数据的解析

# coding:utf-8
import web,json
from test_pb2 import Person
urls = (
    '/http_json', 'index',
    '/http_proto','pb'
    )

#json请求进入该逻辑
class index:
    def GET(self):
        return "Hello"
    def POST(self):
        data = web.data()
        result = json.loads(data)
        return result['name']

#pb请求进入该逻辑
class pb:
    def GET(self):
        return "Hello"
    def POST(self):
        data = web.data()
        person = Person()
                    person.ParseFromString(data)    #反序列化
        return person.name

app = web.application(urls, globals())

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

客户端运行结果如下

PB在HTTP协议中怎么用

相关内容

热门资讯

寻找照片中的TA丨“天路”照片... 2006年7月1日举世瞩目的青藏铁路全线通车千年雪域高原彻底告别闭塞正式通车前几日在拉萨市当雄县公塘...
31省都在抢的几大赛道,藏着未... 最近证券时报发了篇报道,宣布了一个重磅消息:31个省份“十五五”规划已经全部出齐了。我翻完了发现一件...
西班牙港口高管敦促欧盟推迟对俄... 【文/观察者网 熊超然】自俄乌冲突爆发以来,欧洲在能源领域的脆弱性不断凸显。日前,欧洲一家主要天然气...
斯洛伐克总理:不会参与北约70... 据《基辅独立报》报道,斯洛伐克总理菲佐当地时间6月27日表示,反对在即将举行的北约峰会上向乌克兰提供...
为什么洗衣机等大家电都不带程序... 最佳回答 由于技术的限制现在市面上的洗衣机很少带有记忆功能的。不过还是有少部分的洗衣机是带有记忆功能...
双动力洗衣机如何选择? 最佳回答 双动力洗衣机现在在市面上还是比较受欢迎的,现在在市面上的双动力洗衣机,品牌也是比较多的,我...
怎么把我的电脑放到桌面上 最佳回答既然您是想要把我的电脑放到自己电脑的桌面位置上,那大概可以想象得到,您用的是windows1...
为什么混水阀下的水嘴不能接延长... 混水阀下的水嘴可以接延长管,但需要注意以下几点:1. 水压问题:延长管可能会增加水流的阻力,导致水压...
格力不能启动面板两个灯闪 原因可能是显示屏故障,可以通过更换显示屏的方法解决;原因可能是主控板显示屏的电路部分有损坏故障,可以...
特朗普力推修改中期选举规则,美... 据美国《华盛顿邮报》报道,距离美国中期选举仅剩4个月之际,美国总统特朗普推动修改美国选举规则的努力正...