這一篇講怎么簡單結合模擬云接口,嘗試簡單的后端接接口、接受并傳數據
一、下載Apifox接口文檔軟件
目前的企業都是采用前后端分離開發的,在開發階段前后端需要統一發送請求的接口,前端也需要在等待后端把數據存到數據庫之前,自己也要有一些數據用來測試前端頁面的,那么這時就需要一個前后端開發合作的接口軟件
黑馬視頻李推薦的是postman,但是我不建議,我強烈推薦Apifox!!
第一、他是中文的,別的是英文的
第二、操作方便,基本很多企業、團隊都在用
下載很簡單,應用商店、官網都可以下載安裝
二、在“請求處理類”里寫一個【請求方法】模擬接口
上一篇我講過一個springboot的“請求處理類”怎么寫,然后里面的一個“請求方法(請求接口)”大概格式就是這樣:
@RestController
public class 請求處理類 {@RequestMapping("/方法名(接口路徑名)")public String 方法名(接口路徑名)(請求參數){//......發請求【后端】看到的return 發送請求后【前端】看到的}}
然后別忘了到【啟動類】重新啟動運行一次spring boot
三、怎么用Apifox模擬請求?
點進軟件,到【個人空間】—>【個人項目】
到【接口管理】—>【示例項目】—>【“+”添加接口】
然后就可以定義我們的接口,就跟填表格一樣
然后點保存,然后到【文檔】選【正式環境】點【運行】
這里這幾個需要改一下:
然后點擊【發送】就可以有結果了
前端看到的
后端看到的
四、post跟get有所不同
大部分步驟一樣,還是創建請求方法,然后運行啟動類,然后到Apifox創建接口.......
但是留意這里一點,post的請求參數是在請求體里的,所以在創建接口時,我們要把參數寫到Body里
前端看到的
后端看到的
這里解釋一下,這是根據http協議解析
當我們打開瀏覽器摁F12檢測時,安裝下面步驟可以看到我們發的請求詳情
然后一個請求包含的信息有:
然后我們要的信息一般看【Headers】就夠了
【Header】里我們會看到【Response?Headers】和【Request Headers】
一個是【服務器響應端的請求頭信息】一個是【發送請求端的請求頭信息】
(提示:圖片原作者來自于作者“良辰真不戳”)
那么【GET】方法的傳過去的參數信息包含在【Request Headers】的【第一行】
然后【POST】方法的傳過去的參數信息在【Payload】
所以我們在設置post接口的時候是在請求體里設置
五、前面是簡單參數請求,現在是正式參數格式請求
但是學過前端的兄弟們會留意到,我們剛剛返回給前端的數據是什么鬼?
【name:岑梓銘 age:23】這樣的數據根本沒法用啊,而且數據量大的情況下更不可能給你【return "name:"+name+" age:"+age;】這樣一個數據一個數據拼接傳輸,所以一個正常的參數應該是以【對象】的形式傳送,所有信息包含在一個對象
那么就回到java知識,我們需要自定義好一個JavaBean類
(提示【Alt + insert】自動生成一個JavaBean類的構造方法、getter、setter等方法)
然后回到【請求處理類】,還是寫一個【請求方法/請求接口】
此時參數就可以寫一個,就是我們剛剛創建好的類就行了(別忘了導入類,這是兩不同地方的文件)
然后,Apifox還是一樣的邏輯設置好對應的接口,然后就能看到包著多個信息的對象顯示出來
六、個別形式參數(數組、集合)留意點
假如前端傳回多個同名參數的參數值,那就要用數組或者集合來獲取
但是需要留意一點:集合參數需要在形參前面加一個【@RequestParam】
七、日期參數
后端接收前端時間參數時,要采用@DateTimeFormat(pattern="格式")的方式來規定好時間的格式,不能一會“xxxx年xx月xx日”一會“xxxx.xx.xx”一會“xxxx-xx-xx”,然后還有形參那里時間的變量類型是LocalDateTime
八、正式的JSON格式參數
(雖然我不知道為什么,但還是學一下吧)
有的情況可能前端會傳JSON格式的參數給回后端(雖然我不知道到底有沒有這種情況),那這個情況該怎么傳參呢?
首先spring boot里面寫代碼,加一個@RequestBody,就可以把前端傳過來的JSON參數值【封裝進】我們寫的類里
然后Apifox里直接按post接口流程來,但是這里得把“x-www-form-.....”改成“json”
然后注意!!這里可能會出現一個問題:返回代碼500,說明后端這邊出現問題
我檢查半天愣是找不出半點問題,直到我一個后端的大佬朋友跟我說......我用來獲取、封裝這個JSON參數值的JavaBean類里缺少了【無參構造方法】!
如果正常的對象參數就沒影響,但是如果要把JSON參數值封裝進去,就一定得有【無參構造方法】
九、路徑參數
除了 “域名?參數1=值1&參數2=值2” 這種方式傳參,還有一種常見的是 “域名/路徑/{參數值1}/{參數值2}” 這種直接拼接在路徑的傳遞方式
那么這種傳遞參數的方式在spring boot代碼編寫方面要注意兩點:
1、方法名 跟 @RequestMapping("...")的名不用一樣,因為路徑參數里@RequestMapping("...")綁定的是參數,而不是該方法
2、形參那,每個參數前要有一個“@PathVariable”來聲明這個參數是在自路徑那的
然后在Apifox接口設置處注意:
1、參數不是把形參名字接在路徑、然后在參數填表格就行了
2、路徑參數不支持中文值傳遞
下面這兩個是錯的
而是直接把參數值寫在路徑對應的參數處,然后只能傳英文
下面這是對的