iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0

Controller

在上一篇章的時候,我們提到「Controller 是面向客戶端,負責響應客戶端的請求,且管理路由並返回數據的 Class」,這個定義可以在 NestJS 文件中看到:
https://ithelp.ithome.com.tw/upload/images/20200922/201196191Ntf9UCXzE.png

文件亦提供一張相當好理解的圖:
https://ithelp.ithome.com.tw/upload/images/20200922/20119619UlBaSWIs89.png

及設定了路由機制,會決定哪個 Controller 負責接收哪些請求。

今天我們繼續來簡易看看 Controller 還能做些什麼變化。

為這個 Controller 加入上層路由

在上一篇章的時候,我們的 Controller 長這樣:
https://ithelp.ithome.com.tw/upload/images/20200922/20119619LX1y30oZgh.png

我們 Get http://localhost:3000 可以得到 Hello World!

我們可以在該 Controller 裝飾器加入上層路由,這樣這個 Controller 底下的所有接口都會吃到這個設定,比方說,我加入了「cat」這個路由,並且重新 Run 一次 Server:
https://ithelp.ithome.com.tw/upload/images/20200922/201196195YifaHfrgK.png

此時我們再打 http://localhost:3000 會得到這樣的結果:
https://ithelp.ithome.com.tw/upload/images/20200922/20119619VMTbgRPt6c.png

因為此 Controller 中的所有接口都會變成帶有「cat」這個上層路由,@Get getHello() 這個接口亦包含在裡面,故我們現在要 Get 的則是:http://localhost:3000/cat ,回來啦,我們的 Hello World!:
https://ithelp.ithome.com.tw/upload/images/20200922/201196192WBvzuh2As.png

在 HTTP 請求方法裝飾器中加入路由

現在我們在 @Get 裝飾器中再加入屬於這個接口的路由:
https://ithelp.ithome.com.tw/upload/images/20200922/20119619guumJnDVxT.png

這樣上面的 http://localhost:3000/cat 就會失效了,因為現在新的接口是 http://localhost:3000/cat/fetchcatnum

通用路由

在路由中加入個『*』,此時路由會變成通用型的:
https://ithelp.ithome.com.tw/upload/images/20200922/20119619fm5sajkLOP.png

比方說 fetch_catnum、FETCHCATNUM、fetchacatnum、fetchbcatnum 通通都能請求到這個接口(雖然好像很少會用這種方法)。

更改 Status Code

默認請求成功的 Status Code 是 200,除了 Post 是 201,在此我們可以將它改成 999 看看:
https://ithelp.ithome.com.tw/upload/images/20200922/20119619USLdRlYNRD.png

拿 Postman 來打打看,確實更改了:
https://ithelp.ithome.com.tw/upload/images/20200922/20119619V7u8XVI70N.png

Header

亦可以在此自定義 Header,例如:
https://ithelp.ithome.com.tw/upload/images/20200922/20119619SbQXdN3O8E.png

Redirect

Redirect 可以將我們這個接口重新導向另一個 URL,比方說我在網路上隨便找一個豬豬圖片的網址,把它放進來:
https://ithelp.ithome.com.tw/upload/images/20200922/20119619mGU7v5nIPx.png

然後我們來打打看 Postman,得到豬豬啦!
https://ithelp.ithome.com.tw/upload/images/20200922/20119619ZRb8IWA2fO.png

其他

其他關於如何接收客戶端傳來的參數、非同步的運用等等,等介紹完 Provider 後陸續講解。

/*
本系列文係個人新手開發心得,可能會有許多錯誤,煩請多多包容不吝指教。
*/


上一篇
Day 06 - 簡易 NestJS 專案導覽(下) 與你的第一支 API
下一篇
Day 08 - NestJS 中的 Provider 基礎篇
系列文
從零開始的後端異世界生活30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言