asp.net怎么生成json数据_JSON Server - 一行代码都不用写就能生成API

想要做一个简单的mock测试服务,或有一些小规模的静态数据需要做查询服务,这时候去用Web框架写RESTful API就有些太麻烦了。能不能只给数据,不写代码就能生成API呢?JSON Server,只需要一个JSON文件,不到30秒就可以实现包括CRUD在内的API接口。

d08e52352fb7ab34e215eafca4e83800.png

JSON Server

简介

JSON Server,是 typicode 在Github上开源的Web API工具,项目位于 https://github.com/typicode/json-server,目前版本为 0.16.1。JSON Server无需进行代码的编写,仅需一个包含数据的JSON文件,就能使用JSON Server提供的命令行工具生成一个RESTful API的服务,支持包括增删改查,以及筛选、分页、排序、全文检索等操作,可以作为小规模数据的Web服务,或者Mock测试服务的开发,十分方便,快捷高效,对于非专业的开发人员而言尤为友好。

b0f86e16b24cf29abd2d2844507bc8ff.png

JSON Server

安装

JSON Server使用Javascript开发,可以使用NPM进行全局安装:

npm install -g json-server

示例

使用JSON Server十分简单。首先,我们需要创建一个JSON文件,并填充我们的数据:

{  "posts": [    { "id": 1, "title": "json-server", "author": "typicode" }  ],  "comments": [    { "id": 1, "body": "some comment", "postId": 1 }  ],  "profile": { "name": "typicode" }}

数据中定义了posts(文章),comments(评论)和 profile(作者信息)这3个数据集合。我们把这个JSON文件保存为 db.json,并在命令行运行

json-server --watch db.json

然后,访问 http://localhost:3000/posts/1,你就会得到响应

{ "id": 1, "title": "json-server", "author": "typicode" }

查询得到了ID为1的文章数据。可以看到,在JSON Server中,我们的db.json充当了一个NOSQL数据库的作用,所有的操作都会在该文件上进行。

JSON Server遵守RESTful API的设计准则,例如对于posts,其所生成的API包括:

GET    /postsGET    /posts/1POST   /postsPUT    /posts/1PATCH  /posts/1DELETE /posts/1

此外,JSON Server还支持对于属性值的过滤:

GET /posts?title=json-server&author=typicodeGET /posts?id=1&id=2GET /comments?author.name=typicode

支持使用_page和_limit来进行数据列表分页:

GET /posts?_page=7GET /posts?_page=7&_limit=20

支持使用_sort和_order来进行排序:

GET /posts?_sort=views&_order=ascGET /posts/1/comments?_sort=votes&_order=ascGET /posts?_sort=user,views&_order=desc,asc

支持使用_start和_end或_limit来进行数据列表的切片:

GET /posts?_start=20&_end=30GET /posts/1/comments?_start=20&_end=30GET /posts/1/comments?_start=20&_limit=10

支持使用_gte、_lte、_ne和_like等操作符进行大于等于等数据比较的过滤:

GET /posts?views_gte=10&views_lte=20GET /posts?id_ne=1GET /posts?title_like=server

支持使用参数q进行全文本搜索:

GET /posts?q=internet

注意到在我们定义的JSON文件中,comments数据包含了属性postId,实际是一个对于posts.id的外键。JSON Server可以自动利用数据中的连接关系进行查询,使用_embed参数:

GET /posts?_embed=commentsGET /posts/1?_embed=comments

这就可以获取某篇文章的所有评论了。也可以使用简化的接口直接获取评论:

GET  /posts/1/commentsPOST /posts/1/comments

更多

JSON Server功能强大,还包括:

  • 使用static命令行参数进行静态文件服务;
  • 通过port参数改变端口;
  • 使用url作为JSON文件的参数来访问远程数据;
  • 使用Javascript文件代替JSON文件来实现动态数据生成:
// index.jsmodule.exports = () => {  const data = { users: [] }  // Create 1000 users  for (let i = 0; i < 1000; i++) {    data.users.push({ id: i, name: `user${i}` })  }  return data}

再运行命令

json-server index.js
  • 添加自定义的路由接口,使用routes参数;
{  "/api/*": "/$1",  "/:resource/:id/show": "/:resource/:id",  "/posts/:category": "/posts?category=:category",  "/articles?id=:id": "/posts/:id"}
json-server db.json --routes routes.json
  • 添加中间件;
  • ……
379dfcd59ebc61586769d112f304f000.png

JSON Server

总结

JSON Server使用方便,功能强大,在轻量的RESTful API开发场景下,其简单的使用方法可以免去了使用各种框架和数据库的繁琐,免除了一些意义不大的重复工作,极大地提高了效率,解放了双手,尤其对于前端开发人员,或数据科学研究者而言十分友好。

JSON Server功能丰富,能够对于数据进行一定程度的认知,并生成合乎期望的API,各种查询操作丰富;底层使用express实现,性能和稳定性等也能满足基本需求;代码结构较为清晰,值得参与进一步的开源贡献。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值