最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解iOS平臺(tái)調(diào)用后臺(tái)接口的正確姿勢(shì)

 更新時(shí)間:2019年10月25日 11:47:34   作者:妙手空虛  
這篇文章主要介紹了詳解iOS平臺(tái)調(diào)用后臺(tái)接口的正確姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

做iOS開(kāi)發(fā),除非你做的是單機(jī)應(yīng)用,否則一定避免不了接口調(diào)用,也就是所謂的API調(diào)用。

而對(duì)于這方面,每個(gè)公司定義接口的格式不盡相同,從而導(dǎo)致我們的代碼沒(méi)法達(dá)到通用。

甚至你接私活的話,更會(huì)遇到五花八門(mén)的接口格式。那么有沒(méi)有一種通用的方式來(lái)處理這些不通用的格式呢?

我嘗試從變化的接口格式中找到不變的東西,把這些不變的東西進(jìn)行可配置,從而形成以不變應(yīng)萬(wàn)變的接口調(diào)用方式。
這些不變的東西,包括如下幾種:

  • 錯(cuò)誤碼
  • 錯(cuò)誤消息
  • 業(yè)務(wù)數(shù)據(jù)

而對(duì)于錯(cuò)誤碼又可以分如下幾類(lèi):

  • 成功
  • 失敗
  • token失效

基于以上的分析,形成了一個(gè)開(kāi)源庫(kù),希望能在一定程度上方便大家的開(kāi)發(fā)。

開(kāi)源地址:https://github.com/wochen85/FKApiInvoker

下面進(jìn)行使用的詳細(xì)說(shuō)明:

FKApiInvoker

iOS 平臺(tái)網(wǎng)絡(luò)接口調(diào)用封裝

安裝

pod 'FKApiInvoker'

使用

1. 初始化配置,可以放在Appdelegate的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions方法中,或者其他你認(rèn)為合適的地方,假設(shè)后臺(tái)返回的json格式如下:

{"code":0,
"msg":"成功",
"data":{"name":"CHAT",
    "age":18}}

其中 code是錯(cuò)誤碼(0代表處理成功,127代表token過(guò)期),msg是提示消息,data 是具體的業(yè)務(wù)數(shù)據(jù)

那么做如下配置:

FKApiInvokerConfig* config = [[FKApiInvokerConfig alloc] initWithBaseUrls:@[@"http://www.httpbin.org",@"http://www.httpbin.org",@"http://www.httpbin.org",@"http://www.httpbin.org"] commonHeaders:@{@"test": @"test"} respCodeKey:@"code" respMsgKey:@"msg" respDataKey:@"data" successCode:0 tokenExpiredCode:127];
  [[FKApiInvoker sharedInvoker] configInvoker:config];
  [FKApiInvoker sharedInvoker].tokenExpiredBlk = ^{
    //token失效,跳轉(zhuǎn)登錄頁(yè)面
  };

2. 調(diào)用后臺(tái)API

[FKApiInvoker fire:@"post" path:@"/personinfo/login" param:nil headers:headers body:body responseModelClass:[LoginResp class] success:^(LoginResp* model) {
    //成功處理
  } failure:^(NSError *error) {
    //失敗處理
  }];

3. 使用mock數(shù)據(jù)

[FKApiInvoker fireWithMockData:mockData method:@"post" path:@"/personinfo/login" param:nil headers:headers body:body responseModelClass:[LoginResp class] success:^(LoginResp* model) {
    //成功處理
  } failure:^(NSError *error) {
    //失敗處理
  }];

其他情況

1. 后臺(tái)返回的業(yè)務(wù)數(shù)據(jù)和錯(cuò)誤碼、錯(cuò)誤消息平級(jí):

{"code":0,
  "msg":"成功",
  "name":"CHAT",
  "age":18}

則在初始化配置的時(shí)候改成這種:

FKApiInvokerConfig* config = [[FKApiInvokerConfig alloc] initWithBaseUrls:@[@"http://www.httpbin.org",@"http://www.httpbin.org",@"http://www.httpbin.org",@"http://www.httpbin.org"] commonHeaders:@{@"test": @"test"} respCodeKey:@"code" respMsgKey:@"msg" respDataKey:nil successCode:0 tokenExpiredCode:127];
  [[FKApiInvoker sharedInvoker] configInvoker:config];
  [FKApiInvoker sharedInvoker].tokenExpiredBlk = ^{
    //token失效,跳轉(zhuǎn)登錄頁(yè)面
  };

即respDataKey參數(shù)傳nil

2. 如果通用頭在初始化配置之后可能發(fā)生變化,這種情況常見(jiàn)于用戶登錄之后,通用頭里面需要加入形如token的字段
那么調(diào)用如下方法:

[[FKApiInvoker sharedInvoker] configCommonHeaders:@{@"token": @"token string"}];

3. 需要做其他更加靈活的json格式的http請(qǐng)求?

可以直接使用我寫(xiě)的另一個(gè)庫(kù):JsonModelHttp

事實(shí)上FKApiInvoker底層也是依賴的JsonModelHttp.

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS使用UICollectionView實(shí)現(xiàn)橫向滾動(dòng)照片效果

    iOS使用UICollectionView實(shí)現(xiàn)橫向滾動(dòng)照片效果

    這篇文章主要為大家詳細(xì)介紹了iOS使用UICollectionView實(shí)現(xiàn)橫向滾動(dòng)照片效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • iOS通過(guò)多種方式創(chuàng)建控制器

    iOS通過(guò)多種方式創(chuàng)建控制器

    這篇文章主要為大家詳細(xì)介紹了iOS通過(guò)多種方式創(chuàng)建控制器的相關(guān)方法,感興趣的小伙伴們可以參考一下
    2016-04-04
  • IOS 常見(jiàn)的循環(huán)引用總結(jié)

    IOS 常見(jiàn)的循環(huán)引用總結(jié)

    這篇文章主要介紹了IOS 常見(jiàn)的循環(huán)引用總結(jié)的相關(guān)資料,循環(huán)引用,指的是多個(gè)對(duì)象相互引用時(shí),使得引用形成一個(gè)環(huán)形,導(dǎo)致外部無(wú)法真正是否掉這塊環(huán)形內(nèi)存。其實(shí)有點(diǎn)類(lèi)似死鎖,需要的朋友可以參考下
    2017-03-03
  • 詳解iOS 實(shí)現(xiàn)一對(duì)多代理方案

    詳解iOS 實(shí)現(xiàn)一對(duì)多代理方案

    本文主要介紹了iOS 實(shí)現(xiàn)一對(duì)多代理方案,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解iOS開(kāi)發(fā)中app的歸檔以及偏好設(shè)置的存儲(chǔ)方式

    詳解iOS開(kāi)發(fā)中app的歸檔以及偏好設(shè)置的存儲(chǔ)方式

    這篇文章主要介紹了iOS開(kāi)發(fā)中app的歸檔以及偏好設(shè)置的存儲(chǔ)方式,示例代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-12-12
  • iOS使用UIKeyInput自定義密碼輸入框的方法示例

    iOS使用UIKeyInput自定義密碼輸入框的方法示例

    這篇文章主要給大家介紹了關(guān)于iOS如何使用UIKeyInput自定義密碼輸入框的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • iOS當(dāng)多個(gè)網(wǎng)絡(luò)請(qǐng)求完成后執(zhí)行下一步的方法詳解

    iOS當(dāng)多個(gè)網(wǎng)絡(luò)請(qǐng)求完成后執(zhí)行下一步的方法詳解

    在多線程中,有時(shí)候我們會(huì)遇到一個(gè)界面同時(shí)有多個(gè)網(wǎng)絡(luò)請(qǐng)求(比如a,b,c,d四個(gè)網(wǎng)絡(luò)請(qǐng)求),在這四個(gè)個(gè)請(qǐng)求結(jié)束后,在請(qǐng)求到數(shù)據(jù)去做其他操作(UI更新等),下面這篇文章主要給大家介紹了關(guān)于iOS當(dāng)多個(gè)網(wǎng)絡(luò)請(qǐng)求完成后執(zhí)行下一步的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12
  • Objective-C中字符串NSString的常用操作方法總結(jié)

    Objective-C中字符串NSString的常用操作方法總結(jié)

    這篇文章主要介紹了Objective-C中字符串NSString的常用操作方法總結(jié),Objective-C中NSString和NSMutableString這兩個(gè)類(lèi)下包含了操作字符串的大多數(shù)方法,需要的朋友可以參考下
    2016-04-04
  • iOS Crash常規(guī)跟蹤方法及Bugly集成運(yùn)用詳細(xì)介紹

    iOS Crash常規(guī)跟蹤方法及Bugly集成運(yùn)用詳細(xì)介紹

    這篇文章主要介紹了iOS Crash常規(guī)跟蹤方法及Bugly集成運(yùn)用詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • iOS應(yīng)用開(kāi)發(fā)中AFNetworking庫(kù)的常用HTTP操作方法小結(jié)

    iOS應(yīng)用開(kāi)發(fā)中AFNetworking庫(kù)的常用HTTP操作方法小結(jié)

    AFNetworking庫(kù)是Objective-C語(yǔ)言寫(xiě)成的用于處理HTTP的第三方庫(kù),在GitHub上開(kāi)源并且一直在被更新和維護(hù),下面就一起來(lái)看一下iOS應(yīng)用開(kāi)發(fā)中AFNetworking庫(kù)的常用HTTP操作方法小結(jié)
    2016-05-05

最新評(píng)論

星子县| 乐昌市| 西安市| 云霄县| 济宁市| 台南县| 曲沃县| 库伦旗| 宜兰市| 神木县| 堆龙德庆县| 洪江市| 错那县| 十堰市| 涡阳县| 台东县| 舞钢市| 东台市| 体育| 苗栗市| 阳山县| 连城县| 行唐县| 合山市| 黄浦区| 五大连池市| 班玛县| 湖南省| 兴海县| 兴城市| 武汉市| 蒙自县| 淳安县| 枝江市| 拉萨市| 新密市| 湟源县| 喀喇沁旗| 汕头市| 中超| 汾西县|