跳至主要内容

[Nodejs] Create server

TL;DR

Nodejs內建提供很多功能,我們可以使用其提供的http方法來建立一個server。

參考資料

相關連結


程式碼

創建一個index.js的檔案,並且撰寫以下程式碼:

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號。

caution

需要注意如果我們希望對方使用HTML來解析我們所回傳的資料,這邊就不能設定test/plain

而是要改寫成:response.writeHead(200,{”Content-Type”:”text/html”});

運行

我們可以使用node index.js來執行剛剛撰寫的程式。

接著我們開啟瀏覽器,在網址列輸入http://localhost:8080 或是 http://127.0.0.1:8080 ,就可以在畫面上看到剛剛撰寫的Hello World!

tip

每當我們修改程式碼,就需要先中止運行(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