[Nodejs] Create server
TL;DR
Nodejs內建提供很多功能,我們可以使用其提供的http
方法來建立一個server。
參考資料
- W3School | W3S
相關連結
程式碼
創建一個index.js的檔案,並且撰寫以下程式碼:
const http = require("http");
http.createServer(function(request,response){
response.writeHead(200,{"Content-Type":"text/plain"})
response.write("Hello")
response.end()
}).listen(8080);
首先先從nodejs提供的模組內引入http
並且賦予到一個變數上。
接著使用createServer
開啟伺服器,中間設定回傳的Header,裡面包含我們回傳內容的格式是什麼(這邊設定是純文字),最後在我們回傳的Body內寫上"Hello"。
後面的listen(8080)代表我們要開啟的port是8080號。
需要注意如果我們希望對方使用HTML來解析我們所回傳的資料,這邊就不能設定test/plain
而是要改寫成:response.writeHead(200,{”Content-Type”:”text/html”});
運行
我們可以使用node index.js
來執行剛剛撰寫的程式。
接著我們開啟瀏覽器,在網址列輸入http://localhost:8080 或是 http://127.0.0.1:8080 ,就可以在畫面上看到剛剛撰寫的Hello World!
每當我們修改程式碼,就需要先中止運行(ctrl+c
),接著再重新執行(node index.js
)才能看到我們剛剛修改的內容。
如果覺得很麻煩,我們可以另外安裝nodemon,安裝方式為在終端機輸入npm install -g nodemon
。這樣會將nodemon這個套件安裝在全域環境,我們就可以在任何一個專案使用nodemon
指令。
接著,我們在運行我們的程式時,改用nodemon index.js
來執行,接著試著修改程式碼內容(e.g:把Hello改成Hello World),在網頁上重新整理之後,就可以看到我們剛剛所撰寫的變化了。這麼一來就不用在每次都中止程式再重新運行!
Content-Type
Content-Type會夾帶在Headers內一起發送出去,讓另一端知道要用哪種方式去解析這筆資料
常見的Content-Type有以下幾種
- application/x-www-form-urlencoded
- application/json
- multipart/form-data
- text/plain
其中又以前兩種最常使用
在axios預設會使用application/json,但是也可以手動更改Header