主要记录Flask封装响应包,包括返回json内容、状态码、Header、Cookie信息。
通过Flask的Response封装响应包
1 | # -*- coding: UTF-8 -*- |
2 | __author__ = 'Joynice' |
3 | from flask import Response |
4 | from enum import Enum, unique |
5 | import json |
6 | |
7 |
|
8 | class ResponseCodeEnum(Enum): |
9 | GET_SUCCESS = '200' |
10 | POST_SUCCESS = '201' |
11 | BAD_REQUEST = '400' |
12 | UNAUTHORIZED = '401' |
13 | FORBIDDEND = '403' |
14 | NOT_FOUND = '404' |
15 | METHOD_NOT_ALLOWED = '405' |
16 | |
17 |
|
18 | def code(cls): |
19 | return [cls.GET_SUCCESS.value, cls.POST_SUCCESS.value, cls.BAD_REQUEST.value, cls.UNAUTHORIZED.value, |
20 | cls.FORBIDDEND.value, cls.NOT_FOUND.value, cls.METHOD_NOT_ALLOWED.value] |
21 | |
22 | |
23 | class MyResponse(): |
24 | |
25 | def __set_cookie(self, resp, cookie): |
26 | if isinstance(cookie, dict): |
27 | for key, value in cookie: |
28 | resp.set_cookie(key, value) |
29 | return resp |
30 | else: |
31 | raise TypeError('cookie must dict') |
32 | |
33 | def __set_header(self, resp, header): |
34 | if isinstance(header, dict): |
35 | for key, value in header: |
36 | resp.headers[key] = value |
37 | return resp |
38 | else: |
39 | raise TypeError('header must dict') |
40 | |
41 | def restful_result(self, message, data, success): |
42 | return {"message": message, "data": data or {}, "success": success or ''} |
43 | |
44 | def get_response(self, status, data=None, message=None, success=None, cookie=None, header=None): |
45 | ''' |
46 | 封装相应包, 相应类型json |
47 | :param status: 状态码 |
48 | :param data: |
49 | :param message: |
50 | :param success: |
51 | :param cookie: |
52 | :param header: |
53 | :return: |
54 | ''' |
55 | resp = Response(json.dumps(self.restful_result(message=message, data=data, success=success)), |
56 | content_type='application/json') |
57 | if status not in ResponseCodeEnum.code(): |
58 | raise Exception('状态码不可用') |
59 | resp.status = status |
60 | if cookie: |
61 | resp = self.__set_cookie(resp, cookie) |
62 | if header: |
63 | resp = self.__set_header(resp, header) |
64 | return resp |
65 | |
66 | myresponse = MyResponse() |