背景: 後端工程師有時候忙,不能給前端工程師準備合適的開發數據,前端
這個時候,就須要 Mock Server 了json
分兩步,後端
獲取數據,根據本身的需求,修改數據api
提供數據bash
根據本身開發的需求修改網絡
先把接口請求到的 JSON 落庫,前端工程師
// json 轉 plist, 放在沙盒的 Document 目錄下
do{
let json = try JSONSerialization.jsonObject(with: self, options: JSONSerialization.ReadingOptions())
if let dict = json as? [String: Any]{
let src = dict as NSDictionary
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let path = documentsURL.appendingPathComponent("one.plist")
let result = src.write(to: path, atomically: true)
print(result)
}
}
catch let error{
print("gg 了, \(error)")
}
複製代碼
若是是直接跑模擬器,打印路徑,直接就能夠找到 Mac 上的 plist 文件.app
直接跑真機,能夠經過 Woodpecker, 同步文件到 Mac 上。ui
先要把下載獲取到的 json 文件,添加在 project 裏面,atom
run 的時候,就打在 Bundle 裏面了
func request(_ callback: @escaping (GeneralSingle<PracticeList>) -> Void){
let debug = true
guard debug == false else {
// 新的接口請求邏輯,走本地的,包含在 Bundle 裏面的 plist 文件
do{
if let path = Bundle.main.url(forResource: "one", withExtension: "plist"){
let data = try Data(contentsOf: path)
let decoder = PropertyListDecoder()
let info = try decoder.decode(GeneralSingle<PracticeList>.self, from: data)
callback(info)
}
}
catch let error as NSError{
print(error)
}
return
}
// 原來邏輯,走網絡請求
AF.request(RequsetURL.youOwn, method: .get, headers: AF.bearer).response { (resp) in
// ...
複製代碼