天天看點

Node.js RESTful APINode.js RESTful API

Node.js RESTful API

什麼是 REST?

REST即表述性狀态傳遞(英文:Representational State Transfer,簡稱REST)是Roy Fielding博士在2000年他的博士論文中提出來的一種軟體架構風格。

表述性狀态轉移是一組架構限制條件和原則。滿足這些限制條件和原則的應用程式或設計就是RESTful。需要注意的是,REST是設計風格而不是标準。

HTTP 方法

以下為 REST 基本架構的四個方法

  • GET - 用于擷取資料。
  • PUT - 用于更新或添加資料。
  • DELETE - 用于删除資料。
  • POST - 用于添加資料。

建立 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
   }
}
      

  

Node.js RESTful APINode.js RESTful API

擷取使用者清單:

以下代碼,我們建立了 RESTful API listUsers,用于讀取使用者的資訊清單, server.js 檔案代碼如下所示:

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

app.get('/listUsers',listUsers);
var server=app.listen(8081,onRequest);

//user清單
function listUsers(rep,res){
	fs.readFile(__dirname+'/'+'users.json','utf-8',function(err,data){
		console.log(data);
		res.end(data);
	});
}

//伺服器響應
function onRequest(){
	var host=server.address().address;
	var port=server.address().port;
	console.log('應用執行個體,通路位址為 http://%s:%s',host,port);
}
      

接下來執行以下指令:

$ node server.js 
應用執行個體,通路位址為 http://0.0.0.0:8081      

在浏覽器中通路 http://127.0.0.1:8081/listUsers,結果如下所示:

{
   "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 addUser, 用于添加新的使用者資料,server.js 檔案代碼如下所示:

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

//添加新的使用者資料
var user={
	"user4":{
		"name":"mohit",
		"password":"password4",
		"prefession":"teacher",
		"id":4		
	}
}

app.get('/addUser',addUser);
var server=app.listen(8081,onRequest);

function addUser(req,res){
	//讀取已經存在的資料
	fs.readFile(__dirname+'/'+'users.json','utf-8',function(err,data){
		data=JSON.parse(data);
		data["user4"]=user["user4"];
		console.log(data);
		res.end(JSON.stringify(data));
	});
}

function onRequest(){
	var host=server.address().address;
	var port=server.address().port;
	console.log('應用執行個體,通路位址 http://%s:%s',host,port);
}
      
$ node server.js 
應用執行個體,通路位址為 http://0.0.0.0:8081      

在浏覽器中通路 http://127.0.0.1:8081/addUser,結果如下所示:

{ 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 } 
}
      

顯示使用者詳情

以下代碼,我們建立了 RESTful API :id(使用者id), 用于讀取指定使用者的詳細資訊,server.js 檔案代碼如下所示:

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

app.get('/:id',getById);
var server=app.listen(8081,onRequest);


//根據id擷取
function getById(req,res){
	//首先讀取json
	fs.readFile(__dirname+'/'+'users.json','utf-8',function(err,data){
		data=JSON.parse(data);
		var user=data["user"+req.params.id];
		console.log(user);
		res.end(JSON.stringify(user));
	});
}


//伺服器操作
function onRequest(){
	var host=server.address().address;
	var port=server.address().port;
	console.log('應用執行個體,通路位址 http://%s:%s',host,port);
}
      
$ node server.js 
應用執行個體,通路位址為 http://0.0.0.0:8081      

在浏覽器中通路 http://127.0.0.1:8081/2,結果如下所示:

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

删除使用者

以下代碼,我們建立了 RESTful API deleteUser, 用于删除指定使用者的詳細資訊,以下執行個體中,使用者 id 為 2,server.js 檔案代碼如下所示:

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("應用執行個體,通路位址為 http://%s:%s", host, port)

})
      
$ node server.js 
應用執行個體,通路位址為 http://0.0.0.0:8081      

在浏覽器中通路 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 } 
}
      

摘自:http://www.runoob.com/nodejs/nodejs-restful-api.html

繼續閱讀