Python 在Django中压缩来自客户端的请求和来自服务器的响应的JSON负载(RESTAPI)。

Python 在Django中压缩来自客户端的请求和来自服务器的响应的JSON负载(RESTAPI)。,python,json,django,rest,django-rest-framework,Python,Json,Django,Rest,Django Rest Framework,我想知道是否有一种方法可以压缩每次都要发送的JSON有效负载,并使用许多重复的字段名。虽然只是关于压缩响应,但我想知道如何从客户端(可能是移动应用程序)压缩JSON负载。另外,我想知道如何在客户端和服务器端将压缩的JSON文件转换回其原始结构 详细的回答和步骤将不胜感激 我正在使用djangorestframework==2.4.4和Django==1.7.7作为API。从客户端来看,不同的工具可能做得不同。基于python请求的客户端的简单实现在中完成 但是对于解压缩,我认为最好是在Web服务

我想知道是否有一种方法可以压缩每次都要发送的JSON有效负载,并使用许多重复的字段名。虽然只是关于压缩响应,但我想知道如何从客户端(可能是移动应用程序)压缩JSON负载。另外,我想知道如何在客户端和服务器端将压缩的JSON文件转换回其原始结构

详细的回答和步骤将不胜感激


我正在使用
djangorestframework==2.4.4
Django==1.7.7
作为API。

从客户端来看,不同的工具可能做得不同。基于
python请求
的客户端的简单实现在中完成

但是对于解压缩,我认为最好是在Web服务器级别进行,就像您对响应压缩所做的一样。Nginx似乎没有内置配置,但在将请求传递到上游之前,有人已经进行了解压缩

另一种可能效率较低的解决方案是在第一个Django中间件中执行解压缩,如下所示:

导入gzip
类SimpleMedia软件:
定义初始化(自我,获取响应):
self.get\u response=get\u response
定义呼叫(自我,请求):
#如果您正在编写多功能API,请检查标题
#解压缩请求体
request.\u body=gzip.decompress(request.body)
#在使用类似django rest框架的情况下填充请求流
request.\u stream=BytesIO(request.body)
响应=自我获取响应(请求)
返回响应
此外,您必须将中间件配置为第一个中间件:

Django设置中的
#
中间件=[
“我们新定制中间件的python路径”,
'django.middleware.security.SecurityMiddleware',
“django.contrib.sessions.middleware.SessionMiddleware”,
'django.middleware.common.CommonMiddleware',
“django.middleware.csrf.CsrfViewMiddleware”,
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.xFrameOptions中间件',
]
以下是参考资料:

  • ,
  • ,
  • ,

  • 是否使用较短的JSON属性名?