一个简单易用的网络请求库,针对小型不复杂的项目使用特别舒服😌。
- 自定义缓存
- 自定义Log
- 自定义Debug
- MD5加密
- 自定义返回错误,自定义数据解析
- 直接返回想要的Model
⚠️ 该项目虽然使用了
Alamofire
,但并非封装Alamofire
,而是使用该库的编码,核心还是使用Apple提供的URLSession
进行编写。
Dependence
Framework | Usage |
---|---|
Alamofire | 编码参数 |
SwiftyJSON | 解析成SwiftJSON 对象 |
Flow
Refrences
Send Flow
Receive Flow
Usage
Simple Usage
Make a request with URL
1 | import Lotus |
Make a request with URLRequest
1 | import Lotus |
Receive Response
ResultConversion
define data to model.
⚠️ Only auto convert while using
generic
andgenericArray
call back.
1 | struct UserModel: ResultConversion { |
Receive Success Data
1 | Lotus.send(router).receive(success: { data in |
Receive Failed
1 | Lotus.send(router).receive(failed: { error in |
Receive progress
1 | Lotus.send(router).receive(progress: { progress in |
Receive response
1 | Lotus.send(router).receive(response: { |
Receive raw data
1 | Lotus.send(router).receive(rawData: { data in |
Receive Raw JSON
1 | Lotus.send(router).receive(rawJSON: { json in |
⚠️ Conflict with success call back.
Receive Generic
Model need to confirm ResultConversion
1 | Lotus.send(router).receive(generic: { (model: UserModel) in |
⚠️ Conflict with success call back.
Receive Generic Array
Model need to confirm ResultConversion
1 | Lotus.send(router).receive(generic: { (models: [UserModel]) in |
⚠️ Conflict with success call back.
Suggesting Usage
Discussion
RequestConversion
RequestConversion
define request conversion.Request
define request content.
1 | /// Struct for request. |
ResultConversion
ResultConversion
define result convert.Result
define result parse way.
1 | /// Struct for result |
default parse data from
"data"
.default with no custom service error.
Initlization Lotus with host.
1 | Center.default.configuration.host = { return "https://httpbin.org" } |
Make a APIRouter
1 | enum APIRouter: RequestConversion { |
Send request
1 | APIRouter.send(.search(query: "Lotus", page: 1)) |
Advance Usage
Custom Parse Way
1 | struct UserModel: ResultConversion { |
⚠️ Only useful for
generic
andgenericArray
call back.
Custom Service Error
1 | struct UserModel: ResultConversion { |
⚠️ If result error is not nil, it will call back with failed
⚠️ Only useful for
generic
andgenericArray
call back.
Custom Debug Center
All connection will through this DebugCenter. You can sub DebugCenter
to custom netowork connection.
1 | class CustomDebugCenter: DebugCenter { |
1 | /// Set Debug center when initlization Lotus. |
Custom Cache Center
1 | class CustomCacheCenter: CacheCenter { |
1 | /// Set Cache center when initlization Lotus. |
Custom Log Center
1 | class CustomLogCenter: LogCenter { |
1 | /// Set Log center when initlization Lotus. |
1 | /// Default log for Client. |