节点JSON服务器的Python实现(Flask作为后端)

pyjserver的Python项目详细描述


Python JSON服务器

节点JSON服务器的Python实现(Flask作为后端)。在

GitHub tag (latest SemVer)PyPIPyPI - LicensePyPI - Wheel

关于

制作一个完整的restapi而不需要编码!
pyjserver是Node JSON Sever的python实现, 它基于json文件创建一个完整的restapi(包含GET、POST、PUT和DELETE方法)。在

下一步是什么

  • 修补HTTP方法。在
  • 使用GET HTTP方法筛选数据。在
  • 使用GET HTTP方法对数据分页。在

安装

Python JSON服务器库位于PyPi存储库中,因此可以与pip一起安装。在

>>> pip install pyjserver

陈述

安装pyjserver之后,创建带有端点和数据的db.json文件。在

^{pr2}$

运行pyjserver cli命令。在

>>> python -m pyjserver my-server ./db.json

或者

>>> python3 -m pyjserver my-server ./db.json

将显示以下输出:

 * Serving Flask app "my-server" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://localhost:5000/ (Press CTRL+C to quit)

现在要测试API,如果转到http://localhost:5000/python-libs,您将在中获得相同的json数据库.json. 在

[{"id":1,"name":"pyjserver","version":"1.0.0"},{"id":2,"name":"flask","version":"1.1.0"},{"id":3,"name":"flask-restful","version":"0.3.8"}]

使用相同的URL,您可以发送POST请求以添加,PUT请求用于编辑,删除请求以从json文件中删除。在

TIP对于每个json键,将使用GET、POST、PUT和DELETE HTTP方法创建一个端点。 您还可以在根url(http://localhost:5000/)中看到所有可用的端点。在

{"endpoints":[{"name":"python-libs","route":"/python-libs"}],"methods":["GET","POST","PUT","DELETE"]}

JSON文件架构

Format:JSON对象,包含JSON对象列表。在

Main JSON key:端点的名称
JSON list value:列出端点的所有记录。要开始时没有数据,只需放置一个空列表[]
^{str1}$JSONs在列表中:端点的每条记录。不要忘记为每个记录添加顺序ID

{"endpoint-1":[{"id":1,"name":"data 01"},{"id":2,"name":"data 02"}],"endpoint-2":[{"id":1,"name":"another data 01"}],"endpoint-3":[]}

因此,上面的JSON将创建3个端点/endpoint-1(有2个记录数据)、endpoint-2(有1个记录数据)和{}(没有记录数据)。 此json文件的主页将显示:

{"endpoints":[{"name":"endpoint-1","route":"/endpoint-1"},{"name":"endpoint-2","route":"/endpoint-2"},{"name":"endpoint-3","route":"/endpoint-3"}],"methods":["GET","POST","PUT","DELETE"]}

HTTP方法

对于创建的每个端点,允许使用GETPOSTPUT和{}HTTP方法。在

  • 得到
>>> curl http://localhost:5000/endpoint-1/
[{"id":1,"name":"data 01"},{"id":2,"name":"data 02"}]
  • 岗位
>>> curl -d '{"name": "data 03"}' -H 'Content-type: application/json' -X POST http://localhost:5000/endpoint-1/
{"id":3,"name":"data 03"}

>>>  curl http://localhost:5000/endpoint-1/
[{"id":1,"name":"data 01"},{"id":2,"name":"data 02"},{"id":3,"name":"data 03"}]
>>> curl -d '{"name": "data 02 edited"}' -H 'Content-type: application/json' -X PUT http://localhost:5000/endpoint-1/2
{"id":2,"name":"data 02 edited"}

>>> curl http://localhost:5000/endpoint-1/
[{"id":1,"name":"data 01"},{"id":2,"name":"data 02 edited"},{"id":3,"name":"data 03"}]
  • 删除
>>> curl -X DELETE http://localhost:5000/endpoint-1/2
{}

>>> curl http://localhost:5000/endpoint-1/
[{"id":1,"name":"data 01"},{"id":3,"name":"data 03"}]

记住:所有数据都在db.json文件中,因此对HTTP方法的任何更改也会更改该文件。 因此,如果更改文件,它将更改API。在

注意:如果编辑json文件并添加一个运行pyjserver的端点,则需要重新启动应用程序以加载新的端点。 但如果您编辑文件并添加新记录,则不必这样做。在

许可证

麻省理工学院

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

推荐PyPI第三方库


热门话题
在Java中超类的构造函数中获取扩展泛型类的泛型类型?   java如何获取实体A的不同记录,该实体A与另一个实体B有一对多的关联,并按B记录的最新时间戳的最大值排序   JavaJSF导航参数依赖关系   具有短密文的java SecretKey匿名IBE   鼠标事件“找不到符号”错误的java解决方案   调用mediaplayer后使用java。停止我不能再发出声音了。为我解释开发参考?   java如何在序列化Avro消息时传递空值   java Sip Servlet未发送邀请请求   java根据规则访问节点,并删除链表中所有未访问的节点   Java 6上的jmockit测试用例必须使用Java代理吗?   JSF转换器f:convertDateTime是如何工作的?   java如何清除Firebase云数据库中的数组?   基于日期的列表java自定义排序   测量Java对象的内存消耗(完全“在应用程序中”)   故障终止/崩溃时的javafx Java(FX)故障保护警报?   java访问名称编码未知的文件   java如何在BlackBerry中绘制实心正方形?   java从JTextArea中删除边框   java可以使用另一个bean的属性来引用spring容器XML配置   数据透视表中具有相同列索引的java计数列