Nodejs Restful Api几点讨论

关于 rest api 版本控制

很多事情,标准和最佳实践是一种平衡

看那本rest api会被玩死,并不实用

rest本身是好东西,其实我只要取其精华就好了

没必要完全按照它做,理解状态变化就好了

标准rest api

自己去实现一下,https://developer.github.com/v3/

写起来还是挺那啥的,举个例子

Current Version

By default, all requests receive the v3 version of the API. We encourage you to explicitly request this version via the Accept header.

Accept: application/vnd.github.v3+json

核心是We encourage you to explicitly request this version via the Accept header.,这是非常标准的rest api写法

可是有多人理解Content-Type(Mime-Type)是啥呢?尤其还要自定义,如果你不理解怎么能用好呢?

再举个例子:link-header

https://developer.github.com/v3/#link-header

The pagination info is included in the Link header. It is important to follow these Link header values instead of constructing your own URLs. In some instances, such as in the Commits API, pagination is based on SHA1 and not on page number.

Link: <https://api.github.com/user/repos?page=3&per_page=100>; rel="next",
  <https://api.github.com/user/repos?page=50&per_page=100>; rel="last"

分页信息里包含link-header,是非常好的表达了状态,从上面的例子,我们可以很轻松的理解下一页和最后一页的

但问题是

很多人不一定理解这种状态是如何用的,对开发的要求还是比较高的
请求的response里增加了这些描述信息,是否真的必要呢?

土,也未必一定不好

标准和最佳实践是一种平衡,一种取舍,有些事情是做了锦上添花,有的是必须的,那么我们能做的就是,做好必须得,如果能锦上添花更好

现实中的开发还是按照自己项目情况来取舍的。

举个土,但实用的例子:微博的接口

它是比较适合国人思维的

http://open.weibo.com/wiki/2/statuses/public_timeline

约定也许更好

比如我写的res.api就是一个约定

res.api is an express middleware for render json api , it convention over api format like this :

{
  data: {

  },
  status: {
    code : x,
    msg  : 'some message'
  }
}

如果api都这样约定,开发速度会非常快,而且简单

客户端 API 开发总结
res.api

moa-api里如何做法?

mount-routes里使用的是mount-routes。

mount-routes里的做法是自动加载某个目录,比如app/routes下的所有目录,子目录作为路由

api的设计可以这样玩

app/routes/api/v3/users

它可以自动映射到url里,对于版本控制还是比较友好的

给mysql和mongodb提供restful接口,有啥现成的包可提供吗?

先给几个简单的

restify
hapi
sails
loopback

其实还有一个我的解决方案,使用我的moajs

首先创建moajs插件

nmm init

使用脚手架,创建模型和基本的rest接口

moag location name:string order_num:string is_full:string  is_available:string warehouse_id:string shelf_id:string

这里会自动创建api目录和对应的文件的

测试这些接口,执行moas即可

moas

这样就可以测试接口了。

目前moajs的状态实现了足够的features,但稳定性和文档等不足,各位可以先拿moa-api玩玩,其他高级特性待稳定后放出

全文完

文章转载自 开源中国社区[https://www.oschina.net]

时间: 2024-12-21 14:17:19

Nodejs Restful Api几点讨论的相关文章

通过一组RESTful API暴露CQRS系统功能

命令和查询责任分离(CQRS)是由Greg Young提出的一种将系统的读(查询).写(命令)操作分离为两种独立子系统的架构模式.命令通常是异步执行的,并存储在一个事务型数据库中,而读操作则通常是最终一致的,并且数据来自于解正规化的视图. 本文在此提出并为读者展示一种为CQRS系统创建一套RESTful API的方式.这种方式结合了HTTP的语义.REST API基于资源的风格,并能够处理分布式计算的某些问题,例如最终一致性和并发性. 此外我们还提供了一套原型API,它建立于Greg Young

如何更好的设计RESTful API

当您的数据模型已开始稳定,您可以为您的网络应用程序创建公共API. 你意识到,很难对你的API进行重大更改,一旦它发布,并希望尽可能得到尽可能多的前面. 现在,互联网对API设计的意见有很多. 但是,因为没有一个广泛采用的标准在所有情况下都有效,所以你前面有一堆选择:你应该接受什么格式? 你应该如何认证? 你的API是否应该版本化?构建API是您可以做的最重要的事情之一,以提高您的服务的价值. 通过使用API,您的服务/核心应用程序有可能成为其他服务增长的平台. 看看当前巨大的科技公司:Face

Restful API 就看这些文章 - 收藏集 - 掘金

一套设计良好的 RESTful API 如何成为前后端的桥梁? - 后端 - 掘金 移动互联网时代,RESTful API成为越来越重要的移动端和服务器端交互的形式.尤其是在很多互联网公司或者传统行业拥抱移动互联网的时候,一套设计良好的Restful API能够帮助互联网产品支持单服务端+多客户端的场景.RESTful架构本身是一个风格而不是... RESTful API 利器 Swagger - 后端 - 掘金 目前公司的项目对外交互都是采用 http resful的协议进行通信,数据格式采用

遗留应用现代化场景:如何正确使用RESTful API

企业正在使用RESTful API来现代化其基础架构的关键方面,但是该方案怎么才能工作呢?我们为此专门采访了OpenLegacy的Zeev Avidan. 对于不堪遗留基础架构重负,并寻找出路的企业而言,应用程序接口成为越来越有吸引力的方案. Zeev Avidan,OpenLegacy的产品副总裁,探讨了使用API来现代化遗留基础架构的典型方案,讨论了在这些方案中为什么RESTful API如此重要,以及很多企业的"遗留"基础架构实际上都比他们意识到的更有价值的原因. 使用API现代

用 Flask 来写个轻博客 (32) — 使用 Flask-RESTful 来构建 RESTful API 之一

目录 目录 前文列表 扩展阅读 RESTful API REST 原则 无状态原则 面向资源 RESTful API 的优势 REST 约束 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写个轻博客 (2) - Hello World! 用 Flask 来写个轻博客 (3) - (M)VC_连接 MySQL 和 SQLAlchemy 用 Flask 来写个轻博客 (4) - (M)VC_创建数据模型和表 用 Flask 来写个轻博客 (5) - (M)VC_SQ

用 Flask 来写个轻博客 (35) — 使用 Flask-RESTful 来构建 RESTful API 之四

目录 目录 前文列表 POST 请求 身份认证 测试 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写个轻博客 (2) - Hello World! 用 Flask 来写个轻博客 (3) - (M)VC_连接 MySQL 和 SQLAlchemy 用 Flask 来写个轻博客 (4) - (M)VC_创建数据模型和表 用 Flask 来写个轻博客 (5) - (M)VC_SQLAlchemy 的 CRUD 详解 用 Flask 来写个轻博客 (6) - (M)V

用 Flask 来写个轻博客 (36) — 使用 Flask-RESTful 来构建 RESTful API 之五

目录 目录 前文列表 PUT 请求 DELETE 请求 测试 对一条已经存在的 posts 记录进行 update 操作 删除一条记录 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写个轻博客 (2) - Hello World! 用 Flask 来写个轻博客 (3) - (M)VC_连接 MySQL 和 SQLAlchemy 用 Flask 来写个轻博客 (4) - (M)VC_创建数据模型和表 用 Flask 来写个轻博客 (5) - (M)VC_SQLAl

用 Flask 来写个轻博客 (34) — 使用 Flask-RESTful 来构建 RESTful API 之三

目录 目录 前文列表 应用请求中的参数实现 API 分页 测试 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写个轻博客 (2) - Hello World! 用 Flask 来写个轻博客 (3) - (M)VC_连接 MySQL 和 SQLAlchemy 用 Flask 来写个轻博客 (4) - (M)VC_创建数据模型和表 用 Flask 来写个轻博客 (5) - (M)VC_SQLAlchemy 的 CRUD 详解 用 Flask 来写个轻博客 (6) -

云计算中的RESTful API入门

许多人认为 API 是组织访问云计算供应商提供的服务的最佳方法.云使用者使用 API 作为软件接口,以各种方式连接和使用资源,但最优或现代的途径是使用基于 http://www.aliyun.com/zixun/aggregation/14172.html">RESTful 协议的 API.请继续阅读,理解 API 的概念,以及它们在 REST API 和云计算服务中如何使用.本文提供了多个用例来演示如何在真实世界中使用此技术. API 入门 API 是一些软件接口,它们针对数据处理而优化