使用Node.js寫一個簡單的api接口

引入Http模塊

默認你已經安裝了Node.js Node當中內置了Http模塊; 能夠使用html

var http= require("http");
複製代碼

引入http模塊;node

Hello world

用Node.js實現一個HTTP服務器程序很是簡單。咱們實現一個最簡單的Web程序, 它對於全部請求,都返回Hello world!,新建一個文件夾apiDemo 在裏面新建一個server.js寫入:git

// 導入http模塊:
var http = require('http');
// 建立http server,並傳入回調函數:
var server = http.createServer(function (request, response) {
    // 回調函數接收request和response對象,
    // 得到HTTP請求的method和url:
    console.log(request.method + ': ' + request.url);
    // 將HTTP響應200寫入response, 同時設置Content-Type: text/html:
    response.writeHead(200, {'Content-Type': 'text/html'});
    // 將HTTP響應的HTML內容寫入response:
    response.end('Hello world!');
});

// 讓服務器監聽8080端口:
server.listen(8080);

console.log('Server is running at http://127.0.0.1:8080/');
複製代碼

而後在當前目錄命令提示符下(cmd等)運行, 輸入:github

node server.js
複製代碼

而後打開瀏覽器輸入:http://127.0.0.1:8080/ 就能夠看到: ajax

91544605447_.pic.jpg

同時能夠看到命令行中有打印的信息:數據庫

GET: /
GET: /favicon.ico
複製代碼

主要須要瞭解的是:json

http.createServer(function(request, response){}) 
複製代碼

它的做用是建立一個http服務,裏面傳一個回調函數,函數中包含兩個參數分別是(request,response)。 其中request是請求對象,response是響應對象。 能夠根據request對象拿到請求頭的一些信息,如: request.url--返回請求路徑 響應成功後: response.writeHead()————發送一個響應頭給請求 response.end('xxx')————響應成功 返回xxx 參考 Nodez中文網-HTTPapi

路由

咱們是想當訪問http://127.0.0.1:8080/的時候返回當前目錄的index.html。 也就是說當request.url === '/'true時就能夠肯定當前請求的是根目錄了,瀏覽器

var url = request.url;
console.log(url);
// '/'
複製代碼

咱們能建立一個服務,而且能使用response.end('Hello world!');返回「Hello world!」。若是想返回一個文件則須要用到Node.js的一個模塊了——fs 文件系統。 它是Node當中處理文件的模塊,首先引入:bash

var fs= require('fs');
複製代碼

能夠使用fs.readFile()來讀取文件

fs.readFile('./index.html', function(err, data)  {
  if (err) throw err;
  console.log(data);
// <Buffer 3c 21 44 4f 4...>
});
複製代碼

回調函數 有兩個參數 (err, data),其中 data 是文件的內容,以二進制形式返回。

而後咱們就能夠編寫代碼了,當訪問根目錄時,返回index.html文件

var http= require('http');
var fs= require('fs');
var server= http.createServer(function(request, response){
    var url = request.url;
    if(url === '/'){
        fs.readFile('./index.html', function(err, data){
          if(!err){
            response.writeHead(200, {"Content-Type": "text/html;charset=UTF-8"});
            response.end(data)
          }else{
              throw err;
          }
        });
    }else{
        console.log("錯誤");
    }
});
server.listen(8080, '127.0.0.1');
複製代碼

而後在當前目錄下新建index.html,在這裏咱們能夠寫一個ajax請求,一會咱們點擊按鈕來實現ajax請求一組數據:

<div id="box">看不到看不到</div>
    <button onclick="success()">我是按鈕</button>
    <script>
    function success(){
        var http= new XMLHttpRequest();
        http.onreadystatechange= function(){
            if(http.status == 200 && http.readyState == 4){
                var msg= http.responseText;
                var box= document.getElementById('box');
                box.innerHTML= JSON.parse(msg).name;
            }
        }
        //發送請求
        http.open('GET', '/data');
        http.send();
    }
    </script>
複製代碼

這段代碼是點擊按鈕的時候 會向/data發起一個ajsx請求,

實現簡單的API接口

既然能訪問根目錄時能夠返回html文件,那咱們能夠本身設定一個url,當請求這個url是咱們就給它返回一組json數據。正常來說這些數據應該是從數據庫讀取的,在這裏只模擬一組json數據,在當前目錄新建一個data.json

{"name": "尼古拉丁 * 趙四"}
複製代碼

因此當前的目錄結構是:

41544775041_.pic.jpg

而後咱們能夠在server.js中判斷一下,當請求的url是/data時,則返回data.json:

if(url === '/data'){
        fs.readFile('./data.json', function(err, data){
            if(!err){
                response.writeHead(200, {"Content-Type": "application/json"});
                response.end(data);
            }else{
                throw err;
            }
        })
    }
複製代碼

而後打開瀏覽器 http://127.0.0.1:8080 後,就會出現index.html頁面,點擊出現的按鈕就會觸發一個對 /data的ajax請求,當server.js接受到請求後,就會判斷url === '/data',而後它就會吧 data.json返回給咱們。

最後的實現是點擊按鈕出現尼古拉丁 * 趙四
GItHub源碼:node-apiDemo
參考:
廖雪峯-http詳解
Node-fs

相關文章
相關標籤/搜索