微前端架构如何改变企业的开发模式与效率提升
929
2022-11-05
Fire 一个使用 Swift 书写的轻量级 iOS/macOS/watchOS/tvOS 平台 HTTP/HTTPS 网络框架
English中文⽇本語
Introduction
What's this?
Fire is a delightful HTTP/HTTPS networking framework for iOS/macOS/watchOS/tvOS platform written in Swift and inspired by Python-Requests: HTTP for Humans.
Fire was written for humans to read, and incidentally, for machines to execute :)
Features
Chainable Request / Response Methods Upload File / Data / MultipartFormData HTTP Basic Authorization TLS Certificate and Public Key Pinning Comprehensive Unit and Integration Test Coverage Synchronously/Asynchronously Request Timeouts Custom Cache Policy form (x-www-form-encoded)/jsON HTTP body
Requirements
iOS 8.0+macOS 10.10+watchOS 2.0+tvOS 9.0+Xcode 8 with Swift 3
Dependency
Jsonify
Installation
CocoaPods
pod 'Fire'
Contribution
You are welcome to fork and submit pull requests.
License
Fire is open-sourced software, licensed under the MIT license.
Usage
To send a request with Fire, you need to do 3 steps.
First, build up a Fire object:
let f = Fire.build(HTTPMethod: .GET, url: "https://yourdomain.com/get?l=zh")
Then, config the Fire object:
f.setParams(["key": "value"])f.setFiles([file])f.setHTTPHeaders(["Accept": "application/json"])f.setBasicAuth("user", password: "pwd!@#")f.setHTTPBody(raw: Data)let certData = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("FireDemo", ofType: "cer")!)!f.setSSLPinning(localCertData: certData) { print("Warning: Under Man-in-the-middle attack!!")}f.onError({ (resp, error) -> Void in print("Error: Network offline!")})
Finally, fire up:
f.fire { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForJSON { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForString { (str, resp) -> Void in print(str)}// orf.fireForData { (data, resp) -> Void in print("Success")}
If you want to cancel it:
// cancel:f.onCancel { print("Canceled")}f.cancel()// or:f.cancel { print("Canceled")}
Use Fire.Dispatch if you want to send requests synchronously:
let f = Fire.build(HTTPMethod: .GET, url: api.stringValue, timeout: timeout, dispatch: .synchronously)
Fire.API:
open class func FireAPI1() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) Fire.request(api: api, params: [:], timeout: 0, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI2() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) api.requestJSON(params: ["user": "Elias"], callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI3() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, headers: ["Content-Type": "text/json"], successCode: .success) api.requestJSON(params: ["userid": "1232"], headers: ["Device": "iOS"], timeout: 60, dispatch: .asynchronously, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}
中文介绍
这是什么?
Fire 一个使用 Swift 书写的轻量级 iOS/macOS/watchOS/tvOS 平台 HTTP/HTTPS 网络框架,深受 Python-Requests: HTTP for Humans 启发。
Fire 为了更好的可读性而生,碰巧还可以运行 :)
特性
链式调用的请求和响应方法 上传文件和数据 支持 HTTP Basic 认证 支持 SSL Pinning 全面的单元和集成测试覆盖 同步/异步请求 超时 自定义缓存策略 支持 form (x-www-form-encoded)/JSON HTTP 请求体
环境
iOS 8.0+macOS 10.10+watchOS 2.0+tvOS 9.0+Xcode 8 及 Swift 3
依赖
Jsonify
安装
CocoaPods
pod 'Fire'
贡献
欢迎任何人提交代码和问题。
协议
Fire 是一个开源软体,遵循 MIT 协议。
使用
要使用 Fire 发送请求,你只需要三个步骤。
首先,构建一个 Fire 实例:
let f = Fire.build(HTTPMethod: .GET, url: "https://yourdomain.com/get?l=zh")
然后,进行一些配置:
f.setParams(["key": "value"])f.setFiles([file])f.setHTTPHeaders(["Accept": "application/json"])f.setBasicAuth("user", password: "pwd!@#")f.setHTTPBody(raw: Data)let certData = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("FireDemo", ofType: "cer")!)!f.setSSLPinning(localCertData: certData) { print("Warning: Under Man-in-the-middle attack!!")}f.onError({ (resp, error) -> Void in print("Error: Network offline!")})
最后,发起请求:
f.fire { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForJSON { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForString { (str, resp) -> Void in print(str)}// orf.fireForData { (data, resp) -> Void in print("Success")}
如果你需要取消请求:
// cancel:f.onCancel { print("Canceled")}f.cancel()// or:f.cancel { print("Canceled")}
如果你想发送同步请求, 请使用 Fire.Dispatch:
let f = Fire.build(HTTPMethod: .GET, url: api.stringValue, timeout: timeout, dispatch: .synchronously)
Fire.API:
open class func FireAPI1() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) Fire.request(api: api, params: [:], timeout: 0, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI2() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) api.requestJSON(params: ["user": "Elias"], callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI3() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, headers: ["Content-Type": "text/json"], successCode: .success) api.requestJSON(params: ["userid": "1232"], headers: ["Device": "iOS"], timeout: 60, dispatch: .asynchronously, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}
⽇本語
Fire とは何か?
Fire とは Swift で作られる iOS/macOS/watchOS/tvOSiプラットホーム HTTP/HTTPS の軽量なデータのインタネットフレームワーク(Internet-Framework)、Python-Requests:HTTP for Humans に深い影響を与えられた。
人を理解やすくなるために、作られました。たまたまにプログラムを実行できる。
フィーチャー(Features)
連鎖されるリクエストとレスポンス のメソッド Upload file/data 可能 HTTP Basic 認証をサポートしている SSL Pinning をサポートしている 全局と局部的なテスト可能 同期通信/非同期通信 タイムアウト URLCachePolicy form (x-www-form-encoded)/JSON HTTP 制式をサポートしている
開発環境/動作環境
iOS 8.0 以上macOS 10.10 以上watchOS 2.0 以上tvOS 9.0 以上Xcode 8 / Swift 3 以上
インストール
CocoaPods
CocoaPods でライブラリをインストールします。
Podfile:
pod 'Fire'
プロジェクトのディレクトリ内で以下を実行 pod install
ライセンス
関連するリポジトリ含め、すべてMITです。詳細は各リポジトリ内のLICENSEをご覧ください。
貢献ガイド、サポート情報、ご留意事項
@渋谷の猫
(※準備中です)
開発/ビルド方法/使用方法
Fire.build
let f = Fire.build(HTTPMethod: .GET, url: "https://yourdomain.com/get?l=zh")
set.../add...
f.setParams(["key": "value"])f.setFiles([file])f.setHTTPHeaders(["Accept": "application/json"])f.setBasicAuth("user", password: "pwd!@#")f.setHTTPBody(raw: Data)let certData = NSData(contentsOfFile: NSBundle.mainBundle().pathForResource("FireDemo", ofType: "cer")!)!f.setSSLPinning(localCertData: certData) { print("Warning: Under Man-in-the-middle attack!!")}f.onError({ (resp, error) -> Void in print("Error: Network offline!")})
fire { (...) in }
f.fire { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForJSON { (json, resp) -> Void in print(json["arg"]["key"].stringValue)}// orf.fireForString { (str, resp) -> Void in print(str)}// orf.fireForData { (data, resp) -> Void in print("Success")}
// cancel:f.onCancel { print("Canceled")}f.cancel()// or:f.cancel { print("Canceled")}
Fire.Dispatch:
let f = Fire.build(HTTPMethod: .GET, url: api.stringValue, timeout: timeout, dispatch: .synchronously)
Fire.API:
open class func FireAPI1() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) Fire.request(api: api, params: [:], timeout: 0, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI2() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, successCode: .success) api.requestJSON(params: ["user": "Elias"], callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}open class func FireAPI3() { Fire.API.baseURL = FireDemo.BASEURL let api = Fire.API(appending: "get.php", HTTPMethod: .GET, headers: ["Content-Type": "text/json"], successCode: .success) api.requestJSON(params: ["userid": "1232"], headers: ["Device": "iOS"], timeout: 60, dispatch: .asynchronously, callback: { (json, resp) in if let status = resp?.statusCode { if status == api.successCode.rawValue { // ... } } }) { (error) in print(error.localizedDescription) }}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~