iOS如何愉快的使用Swagger作为网络请求层解析层

1.什么是Swagger?

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。

官网:Swagger.io

2.客户端如何使用?

一般情况下,移动端在包装网络请求框架时,为了能够愉快的解析服务器返回的数据,你可能要手动定义与服务器返回Model类型相一致的Model用作服务器数据解析。

举个栗子:

__Server:__Java

Android端:

当然可以愉快的去完成解析啦。你只需要把Server端你要用的Model讨要过来按需略作修改就好辣。至于按照文档完成Model代码的堆叠工作,妥妥的丢给服务端猿去搞,反正服务端的猿一般情况下会借助各种框架或者工具完成这一项工作。

iOS端:

这个时候,还能愉快的玩耍嘛?

你看着Android猿只是稍作修修改改,而你却要一副『宝宝心里苦,宝宝就是不说』的这种姿态去按照文档或者服务端的Model去定义OC或者Swift的Model.

如果如果你不想定义,那你就去[xxx.text = serverData[@"字段"]]这样去解析吧.

如果你了解的更多,你当然可以借助JSONKit或者JSONModel或者MJExtension这些json映射库去完成,巴特貌似依然要定义Model吧iOS君.

Swgger说:猩猩们,你只需要按照我的规则,不仅可以快速生成API接口文档,还可以愉快的导出各个平台的网络解析代码哟.

swagger-editor:可以使用swagger-editor编辑API接口文档并且生成平台语言接口,在会用swagger-editor编辑之前,要熟悉下YAML----YAML 语法,然后你只需要按照swagger-editor的Demo去按照文档定义就好了。

准备工作:

1. 安装swagger-editor或者,你也可以在线编辑:

说下安装教程:

如此方便的采用http-server模式安装:

  npm install -g http-server
  wget https://github.com/swagger-api/swagger-editor/releases/    download/v2.9.8/swagger-editor.zip
  unzip swagger-editor.zip
  http-server swagger-editor

安装完成之后,打开浏览器:

又举个栗子(看了下知乎的文档,随便抽取一两个API):

Swagger-Editor.png

注意:有的时候Swagger在国内访问的速度很慢,连上VPN可以愉快的解决否则


caidan.png

这两个菜单有时候显示不出来。

2.在完成YAML编辑文档完成后,现在可以看我Swagger大法如何完成代码导出:

Server端按平台选择:


Server.png

客户端按平台选择:


kehuduan.png

由于我直接用知乎API的做iOS端的例子,所以直接导出的Objective-C的代码


swaggercode.png

3.使用

README.md是这样子说的


SwaggerClient

Requirements

The API client library requires ARC (Automatic Reference Counting) to be enabled in your Xcode project.

Installation

To install it, put the API client library in your project and then simply add the following line to your Podfile:

pod "SwaggerClient", :path => "/path/to/lib"

> ## Recommendation

> It's recommended to create an instance of ApiClient per thread in a multithreaded environment to avoid any potential issue.

> ## Author
> 
> --
> 注意:ARC模式
> 
> 除了可以直接拖进工程之外,借助cocoapods是一个不错的选择,怎么配置文档已经说明。path => "/path/to/lib"这个玩意说的是指明SwaggerClient.podspec这个文件在什么地方。在pod install的时候,发现他在内部依赖了这些库,看来封装的够严实的。
> 
>         Using AFNetworking (2.6.3)
        Using ISO8601 (0.5.0)
        Using JSONModel (1.2.0)
> 
> 在完成拖进或者pods安装之后。比如我需要请求最新文章的接口:
> 
>       #import "SWGNewslatestApi.h"
      #import "SWGApiClient.h"
       //倒包啊
       //完成请求
>       SWGApiClient *client = [[SWGApiClient alloc] init];
>       SWGNewslatestApi *api = [[SWGNewslatestApi alloc] initWithApiClient:client];
>       [api newsLatestGetWithCompletionHandler:^(SWGLastNews *output, NSError *error) {
>        NSLog(@"output--->%@",output);
>        NSLog(@"error--->%@",error);
      }];
      
> 输出log如下:
> 
>       Demo[4575:248914] output--->{
       stories =     (
                {
            "ga_prefix" = 030315;
            id = 7952061;
            images =             (
            );
            title = "\U7f8e\U56fd\U5927\U9009\U300c\U8d85\U7ea7\U661f\U671f\U4e8c\U300d\U7ed3\U675f\U4e86\Uff0c\U600e\U4e48\U770b\U7279\U6717\U666e\U90fd\U5df2\U7ecf\U8d62\U4e86\U4e00\U5927\U534a";
            type = 0;
        },
                {
            "ga_prefix" = 030314;
            id = 7952077;
            images =             (
            );
            title = "\U4e94\U5c81\U90a3\U5e74\Uff0c\U7237\U7237\U7ed9\U6211\U9020\U4e86\U8f86\U6c7d\U8f66\Uff0c\U771f\U7684\U6c7d\U8f66\Uff08\U5982\U56fe\Uff09";
            type = 0;
        },
                {
            "ga_prefix" = 030313;
            id = 7946813;
            images =             (
            );
            title = "\U7089\U77f3\U4f20\U8bf4\U8bbe\U8ba1\U4e2d\U6709\U54ea\U4e9b\U9c9c\U4e3a\U4eba\U77e5\U7684\U6897\Uff1f";
            type = 0;
        }
        )
      }


####以上完成了如何使用Swagger搞网络数据请求解析的操做。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容