与django和django rest框架集成的snake/camel case转换器
any-case的Python项目详细描述
…highlight::python
在开发web应用程序时,通常必须选择case格式(snake_case/camelcase)
用于输入和输出json数据。如果后端是用python编写的,
最简单的选择是选择snake_case。一方面,这是好的,因为我们有明显的一致性,但是另一方面,api的主要消费者(移动和浏览器)更喜欢使用camelcase。如果我们在发布api之前预先考虑一下这一点,那就很好了。但如果这发生在现有的应用程序中,
这样做变得更加困难,因为有消费者使用现有的api。
我们有两种选择:
-引入新版本的api
-在两种情况下同时发送数据
第二种选择增加了数据的大小,第一种选择迫使我们支持两个
版本的api,而不需要太多。这些选项使api的支持和开发复杂化。
当我们有消费者使用snake_case时,事情变得更加复杂,
对他们使用camelcase根本不是一个选项。
情况是这样的。
但是为什么我们必须为客户选择他们使用的案例格式?
为什么客户不以更方便的格式发送和接收数据?
这就是这个库的用途。消费者选择他们期望数据的情况。
如果他们指定了不正确的情况或在没有指定情况的情况下提出了请求,
将按原样提供数据。
此方法允许现有消费者在不更改现有API的情况下工作,并且对于那些希望要使用单一格式,允许对应用程序进行细粒度重写。
从任何"CASE导入"转换"U键"
>;>data={'camelcaseKey':'value'}
>;>converts"U键(data,case='snake')
{'camelcase':'value'}
>;>data={'snake'case':'camelcase'}
>;>converts"U键(data,case='camel')
{'snake case':'camelcase'}
>;>将"u"键(data,case="camelcase',inplace=true)
{snakecase':'camelcase'}
>;>data
{snakecase':'camelcase'}
若要转换文本,请使用"to廑snake廑case``或"to廑camel廑case``::
>;>从任何廑case导入到廑snake廑case,到"驼峰案"
>;>到"蛇案"("蛇案")
"蛇案"
>;>;要想与django框架集成,请参阅"测试"文件夹中的更多示例。您需要添加"any-case"中间件:
middleware=[
"django.contrib.sessions.middleware.sessionmiddleware",
…
"any-case.contrib.django.middleware.keysconvertermiddleware"
请求对象的"json"字段。
也就是说,您可以访问视图中转换的数据,如下所示::
def view(request):
data=request.json
…
rest-framework
----
json解析器和呈现器:
rest\u framework={
'默认呈现程序类':(
'任意大小写.contrib.rest\u framework.anycasejsonparser',
…
),
'默认解析程序类':(
'任意大小写.contrib.rest\u framework.anycasejsonrenderer',
…
)
}
settings
--
``any庠case``有下一个默认设置:
‘header庠key’:‘accept json case’,
‘query庠key’:none,
‘body庠key’:none,
‘convert庠input庠json’:true
}
在django``settings.py``中指定设置。
``any_case``可用于转换:
-将json数据输入snake_case
-将json输出到snake_case或camelcase
或仅单独指定上述一种格式。
头,在查询参数中,或在json主体中。
首选的方式是头,因为在查询中或主体中指定并不总是可能的。在正文中指定case格式还将强制解析根本不需要
的json数据。
禁用转换输出数据
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"body\u key":无,
}
在开发web应用程序时,通常必须选择case格式(snake_case/camelcase)
用于输入和输出json数据。如果后端是用python编写的,
最简单的选择是选择snake_case。一方面,这是好的,因为我们有明显的一致性,但是另一方面,api的主要消费者(移动和浏览器)更喜欢使用camelcase。如果我们在发布api之前预先考虑一下这一点,那就很好了。但如果这发生在现有的应用程序中,
这样做变得更加困难,因为有消费者使用现有的api。
我们有两种选择:
-引入新版本的api
-在两种情况下同时发送数据
第二种选择增加了数据的大小,第一种选择迫使我们支持两个
版本的api,而不需要太多。这些选项使api的支持和开发复杂化。
当我们有消费者使用snake_case时,事情变得更加复杂,
对他们使用camelcase根本不是一个选项。
情况是这样的。
但是为什么我们必须为客户选择他们使用的案例格式?
为什么客户不以更方便的格式发送和接收数据?
这就是这个库的用途。消费者选择他们期望数据的情况。
如果他们指定了不正确的情况或在没有指定情况的情况下提出了请求,
将按原样提供数据。
此方法允许现有消费者在不更改现有API的情况下工作,并且对于那些希望要使用单一格式,允许对应用程序进行细粒度重写。
从任何"CASE导入"转换"U键"
>;>data={'camelcaseKey':'value'}
>;>converts"U键(data,case='snake')
{'camelcase':'value'}
>;>data={'snake'case':'camelcase'}
>;>converts"U键(data,case='camel')
{'snake case':'camelcase'}
>;>将"u"键(data,case="camelcase',inplace=true)
{snakecase':'camelcase'}
>;>data
{snakecase':'camelcase'}
若要转换文本,请使用"to廑snake廑case``或"to廑camel廑case``::
>;>从任何廑case导入到廑snake廑case,到"驼峰案"
>;>到"蛇案"("蛇案")
"蛇案"
>;>;要想与django框架集成,请参阅"测试"文件夹中的更多示例。您需要添加"any-case"中间件:
middleware=[
"django.contrib.sessions.middleware.sessionmiddleware",
…
"any-case.contrib.django.middleware.keysconvertermiddleware"
请求对象的"json"字段。
也就是说,您可以访问视图中转换的数据,如下所示::
def view(request):
data=request.json
…
rest-framework
----
json解析器和呈现器:
rest\u framework={
'默认呈现程序类':(
'任意大小写.contrib.rest\u framework.anycasejsonparser',
…
),
'默认解析程序类':(
'任意大小写.contrib.rest\u framework.anycasejsonrenderer',
…
)
}
settings
--
``any庠case``有下一个默认设置:
‘query庠key’:none,
‘body庠key’:none,
‘convert庠input庠json’:true
}
在django``settings.py``中指定设置。
``any_case``可用于转换:
-将json数据输入snake_case
-将json输出到snake_case或camelcase
或仅单独指定上述一种格式。
头,在查询参数中,或在json主体中。
首选的方式是头,因为在查询中或主体中指定并不总是可能的。在正文中指定case格式还将强制解析根本不需要
的json数据。
禁用转换输出数据
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"body\u key":无,
}