Nodejs Restful Api几点讨论

简介: 关于rest api的几点讨论,比如版本控制,标准restful api,以及回答了《给mysql和mongodb提供restful接口,有啥现成的包可提供》问题

关于 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]

相关文章
|
10月前
|
XML JSON API
识别这些API接口定义(http,https,api,RPC,webservice,Restful api ,OpenAPI)
本内容介绍了API相关的术语分类,包括传输协议(HTTP/HTTPS)、接口风格(RESTful、WebService、RPC)及开放程度(API、OpenAPI),帮助理解各类API的特点与应用场景。
|
12月前
|
缓存 安全 API
RESTful与GraphQL:电商API接口设计的技术细节与适用场景
本文对比了RESTful与GraphQL这两种主流电商API接口设计方案。RESTful通过资源与HTTP方法定义操作,简单直观但可能引发过度或欠获取数据问题;GraphQL允许客户端精确指定所需字段,提高灵活性和传输效率,但面临深度查询攻击等安全挑战。从性能、灵活性、安全性及适用场景多维度分析,RESTful适合资源导向场景,GraphQL则适用于复杂数据需求。实际开发中需根据业务特点选择合适方案,或结合两者优势,以优化用户体验与系统性能。
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
11月前
|
缓存 边缘计算 前端开发
从业务需求到技术栈:电商API选型RESTful还是GraphQL?这5个维度帮你决策
在数字经济时代,电商平台的竞争已延伸至用户体验与系统效能。作为连接前后端及各类服务的核心,API接口的架构设计至关重要。本文对比RESTful与GraphQL两大主流方案,从电商场景出发,分析两者的技术特性、适用场景与选型逻辑,帮助开发者根据业务需求做出最优选择。
|
前端开发 JavaScript NoSQL
使用 Node.js、Express 和 React 构建强大的 API
本文详细介绍如何使用 Node.js、Express 和 React 构建强大且动态的 API。从开发环境搭建到集成 React 前端,再到利用 APIPost 高效测试 API,适合各水平开发者。内容涵盖 Node.js 运行时、Express 框架与 React 库的基础知识及协同工作方式,还涉及数据库连接和前后端数据交互。通过实际代码示例,助你快速上手并优化应用性能。
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
1209 17
|
XML JSON API
Understanding RESTful API and Web Services: Key Differences and Use Cases
在现代软件开发中,RESTful API和Web服务均用于实现系统间通信,但各有特点。RESTful API遵循REST原则,主要使用HTTP/HTTPS协议,数据格式多为JSON或XML,适用于无状态通信;而Web服务包括SOAP和REST,常用于基于网络的API,采用标准化方法如WSDL或OpenAPI。理解两者区别有助于选择适合应用需求的解决方案,构建高效、可扩展的应用程序。
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
JSON JavaScript 前端开发
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
437 12
|
XML JSON 缓存
深入理解RESTful API设计原则与实践
在现代软件开发中,构建高效、可扩展的应用程序接口(API)是至关重要的。本文旨在探讨RESTful API的核心设计理念,包括其基于HTTP协议的特性,以及如何在实际应用中遵循这些原则来优化API设计。我们将通过具体示例和最佳实践,展示如何创建易于理解、维护且性能优良的RESTful服务,从而提升前后端分离架构下的开发效率和用户体验。