背景
-
py後端. 下劃線
-
其他方. 駝峯
-
py 給 前端響應 HumJSONRenderer
-
py 接收 前端請求 SnakeJSONParser
drf parser .
- JSONParser
- HumJSONParser(駝峯格式)
- UnderLineJSONParser(下滑格式)
- SnakeJSONParser(解析駝峯Json到python的下劃線json)
parser.py
class SnakeJSONParser(JSONParser):
def parse(self, stream, media_type=None, parser_context=None):
parser_context = parser_context or {}
# utf-8
encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET)
try:
data = stream.read().decode(encoding)
data_str = json_hump2underline(data)
return json.loads(data_str)
except ValueError as exc:
raise ParseError('JSON parse error - %s' % six.text_type(exc))
drf render 改寫.
- JSONRenderer
- HumJSONRenderer(駝峯格式)
- UnderLineJSONRenderer(下滑格式)
駝峯JsonResponse
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
doc:
"""
from rest_framework.renderers import JSONRenderer
from tools import (
underline2hump,
)
class HumJSONRenderer(JSONRenderer):
def render(self, data, accepted_media_type=None, renderer_context=None):
resp = super(HumJSONRenderer, self).render(
data, accepted_media_type=accepted_media_type,
renderer_context=renderer_context
)
resp_hump = underline2hump(resp)
return resp_hump