默認你已經安裝了Node.js
Node當中內置了Http模塊;
能夠使用html
var http= require("http");
引入http模塊;node
用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
同時能夠看到命令行中有打印的信息:數據庫
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當中處理文件的模塊,首先引入:服務器
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請求,
既然能訪問根目錄時能夠返回html文件,那咱們能夠本身設定一個url,當請求這個url是咱們就給它返回一組json數據。正常來說這些數據應該是從數據庫讀取的,在這裏只模擬一組json數據,在當前目錄新建一個data.json
:
{"name": "尼古拉丁 * 趙四"}
因此當前的目錄結構是:
而後咱們能夠在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