也會說三層式架構-MVC (前端也有三層式架構,但內容不一樣,這部分在剛上完課的時候會把前端的東西都嘎在一起,我花了一段時間才可以區分)
使用者輸入東西後,先來到controller這一層
controller: 定義api的格式,比較常使用http協定中的方法,
總共有八種,先介紹常見的4種http方法: GET、POST、PUT、DELETE
GET: 大部分看到的網站都是透過Get的方式取得資料
POST:新增資料時
PUT: 當資料需要更新時
DELETE:刪除資料
這4種方式也被稱為CRUD
Creat
Read
Update
Delete
!要注意controller是去設計api將資料傳入server並不是要對資料做事情,專案中主要的商業邏輯並不會寫在這部分,而是在service的部分
這裡假設一個情境:查詢使用者資料
前面使用者會輸入要查詢的使用者ID,假設id為1
controller的部分則會對使用者輸入的id去設計一個api,目的是將{id}傳到server中
api的設計像下面這樣:
http method:get
endpoint: api/user/1
(下面是controller的圖)
主要對資料做事情的地方(商業邏輯)
server中會有一個對應到該api的方法
像是 getUserById(id)的方法
如果需要再做一些處理會在這邊,舉例中的假設情境比較簡單一點,不用做處理,只需要將controller傳入的id再傳到repositery
(這邊的資料處理可能是判斷拿回來的東西是不是空的,或是篩選一些資料後再回傳給controller,或是對repositery拿回的資料加上一些設定)
(下面是server的圖)
repositery是一個和DB溝通的地方,也有Dao這個別名的說法
這一層主要將server傳入的資料去DB中撈出相關的東西,並且在拿到資料後,處理成適合專案中商業邏輯的資料再回傳給server,在一步步回傳(server回傳controller最後回到user端)
透過server中getUserById(id)的方法,repositery到DB中去取的id=1的使用者資料,並將資料經過處理回傳給server
(下面是repositery的圖)
到這邊是一個簡單的後端架構介紹,接著要來建立一個專案囉!
這裡使用spring boot框架來建立專案
先到google搜尋 "spring initializr"
這是可以建立並初始化spring boot專案的工具
在project的部分,選擇Maven
language 選擇JAVA
spring boot3.4.4
下面設定好專案的名稱,在按下GENERATE,開始下載吧!
下載完成之,會是一個壓縮檔再把檔案解壓縮
開啟intelliJ將資料夾匯入
開啟intelliJ將資料夾匯入後,先找到pom.xml檔案
這邊是剛剛在建立專案時取的名稱跟選擇的spring boot版本
這裡有兩個地方,先看的部分,中會放這個專案使用的套件,這個專案使用spring boot、還有一個test套件就會放在裡面,或是有用到MySql套件也會放在這邊
在的部分,中間的test讓系統知道這是在寫測試時會用到的,之後再打包專案的時候,系統就不會將這個套件一起打包
到這邊就是一個基本的spring boot框架了
一開始有介紹後端架構,有用到controller、server、repositery這三個地方(DB先緩緩),先在intelliJ建立這三個資料夾
在這裡建立資料夾
分別建立controller、server、repositery(repositery這邊先命名dataObject)的資料夾
在各自的資料夾中建立自己的java class檔案
在spring boot中會大量使用到 @ (念法:annotation,中文譯名為註解)的方式,先把他想像成一個服務,在spring中有不同的服務(@ + 不同的名稱)
在主程式中看到的@SpringBootApplication 這個表示啟動spring的入口
回到controller.java中
在controller加上@RestController
!注意 如果打不出@RestController,到pox檔加入套件,因為要開發web相關的東西因此需要加入web的套件
加入之後讓maven重新跑一下(重新整理)
接著回到controller 寫一個function來簡單體驗一下api
@GetMapping("api/materail")
@GetMapping 是告訴springboot 這是一個http的get方法
("api/materail") 括號內的字串表示連接的路徑
在這個function中回傳hello表示成功
在網頁上打localhost:8080/api/materail
有跑出剛剛回傳的hello就成功啦 (intelliJ 預設的port是8080)
家教 20250109
參考文章:https://kucw.io/blog/springboot/1/