Swiftpack.co - wlgemini/Far as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by wlgemini.
wlgemini/Far 5.6.1
make Function as Request
⭐️ 0
🕓 3 days ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/wlgemini/Far.git", from: "5.6.1")

Far

make Function as Request

接入

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/wlgemini/Far.git", .upToNextMajor(from: "5.6.0"))
]

Cocoapods

pod 'Far', '~> 5.6.0'

快速上手

import Far


// 定义login接口
let login = POST<Account, UserInfo>(url: "https://www.exmple.com/login")

// 定义friends接口
let friends = POST<Page, [Friend]>(url: "https://www.exmple.com/friends")


// 调用login接口
let account = ...
login.request(account) { response in
    let userInfo = response.value
    
    // save `userInfo`
    ...
}

// 调用friends接口
let page = ...
friends.request(page) { response in
    let someFriends = response.value
}

相关概念

Far将各种网络功能作为配置项来存储, 根据配置项用途不同,做了如下分层:

  • 定义API时产生的配置项
  • 默认的API配置项

并且, 根据配置项的影响范围,定义了不同的优先级:

定义API时产生的配置项 > 默认的API配置项

当不同层次中出现冲突的配置项时,优先使用高优先级的配置项

使用

0x00, 设置Session(可选):

Session有默认值, 所以这一步是可选的

Far.session = Alamofire.Session()

⚠️: 在网络请求开始后, 对Session的设置将不再生效.

若要检查Session是否可以修改, 使用Far.isSessionFinalized, 为false表示可以修改.

0x01, 修改默认的API配置项(可选):

// 设置base URL
Far.default.base("https://www.exmple.com/")

// 设置请求头
Far.default.headers([
    "key1": "value1",
    "key2": "value2"
]) 

... 

0x10, 定义请求接口, 并增加配置项(可选):

// 定义login接口
let login = POST<Account, UserInfo>("login")

// 定义friends接口
let friends = POST<Page, [Friend]>("friends").timeoutInterval(2)

0x11, 增加配置项(可选), 并请求API:

let account = Account(name: "Jack", password: "*******")
  
login
    .mock("http://www.mocking.com/login")
    .request(account) { response in
        // some logic here
    }

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics