与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":无,
}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Springdata,按视图映射的只读字段   java将会话变量传递给MessageSource   java存储库未与MongoDB和spring自动连接   爪哇为什么我的蚂蚁不动?   如何用一个使用Java泛型的方法替换这些特定于类型的方法?   java画布。半径<1时绘制倒圆   更新m2e项目时出现java错误消息   java如何停止声音   java如果Android活动位于前台,那么向其发送通知意图的合适方式是什么?   借用时java DBCP2超时   java Android apk无法使用PHP通过3g检索数据,在wifi上工作正常   java高亮显示日历视图事件中数据库中的列表数据   java解析一些从php到安卓的JSON时出现问题   java从struts2调用ajax来填充div   java无法正确显示数据库的回迁项   使用Java的selenium Appium iOS自动化:所有具有可访问性ID的元素   java不正确的Linux可用空间   java Else条件在我的JSP中似乎不起作用   java云消息传递(GCM到FCM)