iOS前后端分离Swagger使用 swagger ISO8016报错

来源:互联网 发布:浪潮服务器安装centos 编辑:程序博客网 时间:2024/05/24 07:09

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搞网络数据请求解析的操做。

原文地址
http://www.jianshu.com/p/30bdc9593694
0 0