python简单校验Http服务

2018-02-03  本文已影响113人  87eb915b0268

凡事都从忙中错,谁人知向静中休

业务程序员如何使用python,简单的检验自己逻辑,本文就简单的以http交互为例简单介绍下:
首先封装下http请求工具类HttpUtil
Get请求

class HttpUtil(object):
//Get参数拼接
    def parseParams(self, params):
        if params:
            result ="?"
            for key, valuein params.items():
                result = result + key + "=" + value + "&"
            return result[:-1]
        return ''

def httpGet(self, url="", headers={}, params={}):
    requestUrl = url +self.parseParams(params)
    request = urllib2.Request(requestUrl)
    for key, valuein headers.items():
        request.add_header(key, value)
    try:
        response = urllib2.urlopen(request)
    except urllib2.URLError, e:
        print e.message
    data = response.read()
    return data

Post 请求

def httpPost(self, url="", headers={}, params={}):
    data = urllib.urlencode(params)
    request = urllib2.Request(url=url, data=data)
    for key, valuein headers.items():
        request.add_header(key, value)
    try:
        response = urllib2.urlopen(request)
    except Exception as e:
        print e.message
    # print response.info()
    # print response.getcode()
    data = response.read()
return data

一般都有防止参数篡改Sign校验和身份认证Token

def genToken(self, params):
//实现略
def genSign(self, params):
//实现略

同时可以提供通用配置类,对于不同环境(dev/test),拿取不同配置,此处只简单实现URI配置

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

import sys

reload(sys)
sys.setdefaultencoding('utf8')

class GlobalConfig(object):

    def xxConfig(self):
        config = "http://127.0.0.1:8080"
        return config

至此,工具类已经简单实现了,下面就具体校验逻辑了,此处只请求url并简单的打印下返回值,并为对返回值和错误码做校验

# encoding=utf8

import json
import sys

from util.global_config import GlobalConfig
from util.http_util import HttpUtil

reload(sys)
sys.setdefaultencoding('utf-8')

class XxTest(object):
    def __init__(self):
        self.config = GlobalConfig()

    HEADERS = {'XX': 'xx'}

    def saveXx(self):
        url = self.config.xxConfig() + "/Xx/save"
        params = {'AA': 'a', 'BB': 'b'}
        print params
        print url
        api = HttpUtil()
        json_data = api.httpPostApi(url, XxTest.HEADERS, params)
        print (json.dumps(json.loads(json_data), indent=4, sort_keys=False, ensure_ascii=False))
    def getXx(self):
        url = self.config.xxConfig() + "/Xx/get"
        print url
        api = HttpUtil()
        json_data = api.httpGetApi(url, XxTest.HEADERS)
        print (json.dumps(json.loads(json_data), indent=4, sort_keys=False, ensure_ascii=False))

# 调用
if __name__ == "__main__":
    xxTest = XxTest()
    xxTest.getXx()
    xxTest.saveXx()

这样就可以发送http请求到开发机器了
这里只是简单的封装了Http请求,同理RPC也可以

上一篇下一篇

猜你喜欢

热点阅读