python的api书写模板

import requests, json
import logging
from pyxis import settings
from .exceptions import HttpBadStatusException

logger = logging.getLogger(__name__)

class UserInfo():
    base_url = settings.USER_URL

    def __init__(self, user_id):
        self.user_id = user_id

    def getUserInfo(self):
        resp = requests.get(UserInfo.base_url)

        if resp.status_code == requests.codes.ok:
            if resp.content:
                try:
                    data = [x for x in json.loads(resp.text) if x['userId'] == self.user_id][0]
                except json.JSONDecodeError: #处理json格式数据异常,json.JSONDecodeError是ValueError的一个子类
                    logger.error("resp.text is not json")
                logger.debug("url:{}\ndata: {}".format(resp.url, data))
            else:
                data = None
            return data
        else:
            logger.error("API access get bad status: {}\n"
                         "url: {}\n"
                         "response: {}".format(
                resp.status_code, resp.url, resp.text))
            raise HttpBadStatusException('get user info failed', resp)

excetptions文件:

class HttpBadStatusException(Exception):

    def __init__(self, msg, http_resp):
        super(HttpBadStatusException, self).__init__(msg)
        self.msg = msg
        self.http_resp = http_resp

    def __str__(self):
        output_msg = "{}\nurl: {}\nstatus_code: {}\nconent:{}".format(
            self.msg, self.http_resp.url, self.http_resp.status_code,
            self.http_resp.text
        )
        return  output_msg

 

posted @ 2019-10-15 13:34  上帝是个单身汪  阅读(231)  评论(0编辑  收藏  举报