什么是REST架构?

REST表示代表性状态传输。REST是一种基于Web标准的架构,并使用HTTP协议。 它都是围绕着资源,其中每一个组件是资源和一个资源是由一个共同的接口使用HTTP的标准方法获得。REST最初是由Roy Fielding在2000年推出。

一个REST服务器只是提供的资源和REST客户端访问和使用HTTP协议修改的资源。这里每个资源由URI标识的/全局标识。其余部分使用各个表示形式表示相同的文字,JSON和XML资源;但JSON是最流行的一种。

HTTP 方法

以下四个HTTP方法通常用在基于REST架构。

  • GET - 这是用来提供对资源的只读访问。

  • PUT - 这被用来创建新的资源。

  • DELETE - 这是用来删除资源。

  • POST - 这被用于更新现有资源或者创建新的资源。

RESTful Web服务

Web服务是用于交换应用程序或系统之间的数据开放的协议和标准的集合。写在各种编程语言和运行在不同平台上的软件应用程序可以使用Web服务来以类似于进程间通信在单台计算机上的方式通过计算机网络进行交换数据,如因特网。 这种互操作性(如Java和Python,或Windows和Linux应用程序之间的通信)是由于使用开放标准。

基于REST架构的Web服务称为RESTful web服务。这些Web服务使用HTTP方法来实现REST架构的概念。RESTful Web服务通常定义的URI,统一资源标识符一项服务,它提供资源表示,如JSON,并设置HTTP方法。

为一个库创建RESTful

考虑到我们拥有具有以下用户的用户的基于JSON数据库中的文件 users.json:

{
   "user1" : {
      "name" : "mahesh",
	  "password" : "password1",
	  "profession" : "teacher",
	  "id": 1
   },
   "user2" : {
      "name" : "suresh",
	  "password" : "password2",
	  "profession" : "librarian",
	  "id": 2
   },
   "user3" : {
      "name" : "ramesh",
	  "password" : "password3",
	  "profession" : "clerk",
	  "id": 3
   }
}

基于这些信息,我们将提供以下RESTful 的API。

S. N. URI HTTP 方法 POST 主体 结果
1 listUsers GET empty 显示所有用户的列表
2 addUser POST JSON String 添加新用户的详细信息
3 deleteUser DELETE JSON String 删除现有用户
4 :id GET empty 查看用户的详细

保持最全的例子部分的硬编码假设的形式,你已经知道如何通过使用Ajax或简单的表单数据,以及如何使用 express Request对象来处理前端的值。

用户列表

让我们用下面的代码在server.js文件中,实现我们的第一个基于RESTful API 的 listUsers:

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/listUsers', function (req, res) {
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       console.log( data );
       res.end( data );
   });
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("Example app listening at http://%s:%s", host, port)

})

现在尝试使用定义的API,访问 http://127.0.0.1:8081/listUsers 在本地机器上,这将产生以下结果:

可以更改指定的IP地址,当您将投入生产环境的解决方案。

{
   "user1" : {
      "name" : "mahesh",
      "password" : "password1",
      "profession" : "teacher",
      "id": 1
   },
   "user2" : {
      "name" : "suresh",
      "password" : "password2",
      "profession" : "librarian",
      "id": 2
   },
   "user3" : {
      "name" : "ramesh",
      "password" : "password3",
      "profession" : "clerk",
      "id": 3
   }
}

添加用户

以下API将告诉你如何在列表中添加新的用户。以下是新用户的详细信息:

user = {
   "user4" : {
      "name" : "mohit",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}

您可以接受JSON的使用Ajax调用的形式,但对于视图相同的输入,我们正在这里硬编码。以下是addUser API来在数据库中的新的用户:

var express = require('express');
var app = express();
var fs = require("fs");

var user = {
   "user4" : {
      "name" : "mohit",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}

app.get('/addUser', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       data["user4"] = user["user4"];
       console.log( data );
       res.end( JSON.stringify(data));
   });
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port
  console.log("Example app listening at http://%s:%s", host, port)

})

现在尝试使用访问定义的API: http://127.0.0.1:8081/addUsers 在本地计算机上。这将产生以下结果:

{ user1:
   { name: 'mahesh',
     password: 'password1',
     profession: 'teacher',
     id: 1 },
  user2:
   { name: 'suresh',
     password: 'password2',
     profession: 'librarian',
     id: 2 },
  user3:
   { name: 'ramesh',
     password: 'password3',
     profession: 'clerk',
     id: 3 },
  user4:
   { name: 'mohit',
     password: 'password4',
     profession: 'teacher',
     id: 4 }
}

显示详细信息

现在,我们将执行将使用用户ID被称为API,它会显示相应用户的详细信息。

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/:id', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       var user = users["user" + req.params.id]
       console.log( user );
       res.end( JSON.stringify(user));
   });
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port
  console.log("Example app listening at http://%s:%s", host, port)

})

现在,让我们把上述服务中使用 http://127.0.0.1:8081/2 在本地计算机上。这将产生以下结果:

{
   "name":"suresh",
   "password":"password2",
   "profession":"librarian",
   "id":2
}

删除用户

这个API是非常相似API addUser,我们接收通过req.body输入数据,然后根据我们从数据库中删除该用户的用户ID。为了让我们的程序简单,我们假设我们要删除ID为2的用户。

var express = require('express');
var app = express();
var fs = require("fs");

var id = 2;

app.get('/deleteUser', function (req, res) {

   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       delete data["user" + 2];

       console.log( data );
       res.end( JSON.stringify(data));
   });
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port
  console.log("Example app listening at http://%s:%s", host, port)

})

现在,让我们把上述服务中使用 http://127.0.0.1:8081/deleteUser 在本地计算机上。这将产生以下结果:

{ user1:
   { name: 'mahesh',
     password: 'password1',
     profession: 'teacher',
     id: 1 },
  user3:
   { name: 'ramesh',
     password: 'password3',
     profession: 'clerk',
     id: 3 }
}
 

标签:Node    js    RESTful    API

本站文章除注明转载外,均为本站原创或编译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:易百教程 [http:/www.yiibai.com]
本文标题:Node.js RESTful API
本文地址:http://www.yiibai.com/nodejs/nodejs_restful_api.html

Node.js RESTful API的更多相关文章

  1. 一个完整的Node.js RESTful API

    前言 这篇文章算是对Building APIs with Node.js这本书的一个总结.用Node.js写接口对我来说是很有用的,比如在项目初始阶段,可以快速的模拟网络请求.正因为它用js写的,跟i ...

  2. 49.Node.js RESTful API

    转自:http://www.runoob.com/nodejs/nodejs-express-framework.html 什么是 REST? REST即表述性状态传递(英文:Representati ...

  3. 十个书写Node.js REST API的最佳实践(上)

    收录待用,修改转载已取得腾讯云授权 原文:10 Best Practices for Writing Node.js REST APIs 我们会通过本文介绍下书写Node.js REST API的最佳 ...

  4. AngularJS 授权 + Node.js REST api

    作者好屌啊,我不懂的他全都懂. Authentication with AngularJS and a Node.js REST api 几个月前,我开始觉得 AngularJS 好像好牛逼的样子,于 ...

  5. 十个书写Node.js REST API的最佳实践(下)

    收录待用,修改转载已取得腾讯云授权 5. 对你的Node.js REST API进行黑盒测试 测试你的REST API最好的方法之一就是把它们当成黑盒对待. 黑盒测试是一种测试方法,通过这种方法无需知 ...

  6. Practical Node.js (2018版) 第8章:Building Node.js REST API Servers

    Building Node.js REST API Servers with Express.js and Hapi Modern-day web developers use an architec ...

  7. Node.js 常用 API

    Node.js v6.11.2  Documentation(官方文档) Buffer Prior to the introduction of TypedArray in ECMAScript 20 ...

  8. 编写 Node.js Rest API 的 10 个最佳实践

    Node.js 除了用来编写 WEB 应用之外,还可以用来编写 API 服务,我们在本文中会介绍编写 Node.js Rest API 的最佳实践,包括如何命名路由.进行认证和测试等话题,内容摘要如下 ...

  9. 使用Node.js原生API写一个web服务器

    Node.js是JavaScript基础上发展起来的语言,所以前端开发者应该天生就会一点.一般我们会用它来做CLI工具或者Web服务器,做Web服务器也有很多成熟的框架,比如Express和Koa.但 ...

随机推荐

  1. javascript之文档碎片,文档碎片在理论上可以提高DOM操作的执行效率

    刚来到这里,趁着还没有忘记,来记录一下,昨晚学习的一个知识点——JavaScript中的文档碎片. 一.对文档碎片的基本认识 文档碎片可以提高DOM操作性能(理论上,注意!!理论上的) 文档碎片原理 ...

  2. poj 2240 Arbitrage (Floyd)

    链接:poj 2240 题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率. 如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 Britis ...

  3. 用的最多的Android Studio 快捷键

    1.Ctrl+D,Ctrl+C 复制删除整一行 2.Ctrl+Alt+L 格式化代码 看起来更好看 3.Ctrl+Q 查看函数API定义 4.Atl+方向键 切换不同文档 平时用快捷键能够提高效率,少 ...

  4. Windows、Ubuntu双系统重装windows系统后grub引导的修复及默认启动项的修改

    今天帮童鞋重装系统,他的电脑是Windows.Ubuntu双系统,需要重装的系统是windows,据说是因为很多游戏都只支持64位,要给换成64位的 = =...      于是我就帮他装了个wind ...

  5. OC-KVO简介

    一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应 ...

  6. 亲测PHpnow 安装环境

    出现问题1: "C:\Windows\system32\7z.exe"' 不是 或批处理文件. 找不到 C:\Windows\system32\7z.exe------------ ...

  7. C#解leetcode 64. Minimum Path Sum

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...

  8. 关于WINDOWS命令

    1. Windows netstat 查看端口.进程占用 netstat -aon —  显示全部进程 2. 查看进程命令 tasklist — 显示全部进程 taskkill — 关闭至少一个系统进 ...

  9. Android 5.0以上手机出现找不到so文件

    问题描述 最近做项目出了一个bug项目中用到so文件,在5.0以上的手机上会报一个初始化异常错误,并提示找不到so文件.lib里目录结构类似如下  在Android5以下都没有问题,在5.0以上会报错 ...

  10. mysql数据库优化日志(更)-howyue

    1)记一次首页查询优化 优化前: 优化后: 主要优化: 1.select查询只查询需要字段: 2.where条件字段添加索引: