小编Mic*_*chi的帖子

如何在 Python 应用程序中处理 HTTP 状态代码?

我正在尝试标准化我对从各种 API 返回的 HTTP 状态代码的处理,以减少我跨文件复制的代码量。

对于我当前的应用程序,我有一组文件,每个文件都包含一个类,这些类都从一个主类继承。我正在使用 Python requests 模块来使用 API。

到目前为止,我已经在每个函数中编写了自定义状态代码处理以继续使用 200,记录我使用 400 发送的请求,记录 404 的 url,重试 5xx,但继续复制此代码很麻烦函数和类。

我正在考虑以下内容(请注意,我在这里简化了代码以仅使用 GET,但实际上,我主要是发布并接收 json 响应):

apiMaster.py

class ApiMaster(object):
    def _handle_response(self, resp):
        if resp.status_code == 200: # or requests.code.ok
            return resp.json()
        if resp.status_code == 400:
            err_msg = "400 Error - Bad Request\n" + resp.request.url + "\n" + resp.request.data
            raise HTTPError(err_msg)
        ...
Run Code Online (Sandbox Code Playgroud)

apiA.py

class Api_A(ApiMaster):
    def query_json_a(self):
        resp = requests.get(self.url + '/a.json')
        try:
            resp_json = self._handle_response(resp)
        except HTTPError as e:
            logger.error(str(e))
Run Code Online (Sandbox Code Playgroud)

apiB.py

class Api_B(ApiMaster):
    def …
Run Code Online (Sandbox Code Playgroud)

python error-handling http http-error python-requests

3
推荐指数
1
解决办法
5864
查看次数