python中支持graphql样式查询的极简json api框架。

jsonapi-simple的Python项目详细描述


jsonapiTravisCoveralls githubCodacy gradeGitHub tagPython versions

A minimalistic JSON API framework in Python with support for graphql-style queries.

jsonapi很大程度上受到graphql的启发,但其目标是更简单的用例。我们的想法是使用一个最小的框架来轻松构建基于json的api,而不需要任何特定的前端技术。这个设计的灵感来自graphql关于一个完全可定制的端点的想法,但是jsonapi不是定义一个特定的查询语言,而是完全基于json的查询和响应,需要更少的样板代码,只适用于python 3,当然,它的测试也更少。如果您发现graphql非常棒,但希望尝试一个可以设置为10行的无咖啡因版本,那么请尝试jsonapi一次。

安装

最简单的安装是通过pip。不幸的是,pypi中已经使用了可爱的名称jsonapi,因此该项目在jsonapi-simple下注册。

pip install jsonapi-simple

您也可以复制并分发项目的源代码:

git clone https://github.com/apiad/jsonapi.git

你好,世界

为了说明这个用法,最好从一个例子开始。jsonapi中的主类是(等等…)JsonApi,它将api中所有可用的命令定义为公共方法:

>>>fromjsonapiimportJsonApi>>>classHelloWorld(JsonApi):...defsay(self,message,args):...returnmessage.format(args)

然后,创建这个api的一个实例并调用它,传递一个json编码的字符串或一个纯python字典,以查询方法或属性:

>>>api=HelloWorld()>>>api({"say":{"$message":"Hello {0}!","$args":"world"}}){'say':'Hello world!'}

继续

使用jsonapi可以完成更多操作,请阅读documentation了解更多信息:

贡献

我们非常感谢您的贡献。只需fork并提交一个pull请求。所有参与者都将获得以下列表中的积分:

  • 亚历杭德罗皮亚德(@apiad

更改日志

在路线图中

  • 自动API文档。

v0.2.2

v0.2.1

  • 支持类型化参数。

v0.2.0

  • 支持字典中的元运算符(_count_items_keys_values)。
  • 现在,JsonObj构造函数接收strdict**kwargs映射。

v0.1.4

  • 支持列表的一些元运算符(_count_items)。

v0.1.3

  • json操作的JsonObj的基本实现。

v0.1.2

  • 支持复杂方法参数(通过JsonObj解析)。

v0.1.1

  • 支持纯方法参数。

v0.1

  • API的基本布局。
  • 简单的基于属性和方法的导航。
  • 自动序列化为JSON兼容对象。
  • 基本文件。

冷终止

这个项目是麻省理工学院授权的,所以你知道这个演习。fork,打开一个pull请求,并确保有(理想情况下)100%覆盖率的最新测试。

MIT License

Copyright (c) 2018 Alejandro Piad

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

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

推荐PyPI第三方库


热门话题
带有嵌套JAR的java RCP ClassNotFoundException   java在输入框中设置默认值,crud应用程序使用spring   java如何在Heroku中使用fs创建新文件   java将JPanel放在JFrame中   java这个正则表达式会匹配“i.imgur.com/xxx”吗?   java在片段内创建RecylerView,而无需在Android中设置片段   Android上Groovy导致java错误的双精度浮点精度损失   swing Java查找JFrame属于JPanel的内容   java Spring junit自连线自定义类本身必须有构造函数吗?   java textswitcher支持前面的文本   从Android客户端到JAXRS的java Post自定义对象   java如何检索JSON数据并使用MPAndroidChart绘制折线图,以及在安卓上的改进   拒绝用户“root”@“localhost”的java c3p0访问(使用密码“是”)   使用Selenium Webdriver自动化ExtJS应用程序时java面临的问题