我们先付给服务端代码的兑现

前方以及陆续的介绍了选取斯维夫特3.0开辟的服务端应用程序的Perfect框架。本篇博客就做叁个阶段性的下结论,做一个整机的实例,其实那个实例在《斯威夫特3.0服务端开垦(一)》那篇博客中已经轻易的介绍过了,本篇博客就来详细的聊一下以此工程的实际完结细节。当然富含iOS端和服务端的代码。本篇博客的介绍顺序依照功用模块来划分的,如登入注册模块、记事本列表,记事本的增加和删除改查等作用。在每一种效能模块,大家先交付服务端代码的落到实处,然后提交客户端代码的完结。

本篇博客的前几有个别至关心重视要介绍任何工程的公用模块,为工程的落到实处做筹算,下方就是大家前几日博客要做的事物。本篇博客iOS端的网络央求首要运用的NSU君越LSession来达成的,关于U奥迪Q3LSession更详尽的介绍请参见从前公布的博客《NSURLSession全家桶》

  图片 1

 

一、记事本数据库的计划

数据库的安顿性以及数额库表的创始本身都选用Sequel Pro来实现的,关于Sequel
Pro的运用请看上篇博客的介绍,本篇博客关于Sequel
Pro的介绍就不做过多废话了。首先大家先付给记事本数据库表的统一准备,以备使用。大家先创制二个名字为perfect_note的数据库(步骤略),然后再次创下制相应的数码库表。因为大家的记事本相比较简单,首要总结登入、注册以及记事本的增加和删除改查。所以我们的数据库结构也是比较轻巧的,perfect_note数据库中唯有两个表,三个是user表,贰个是content表,下方会交到详细的介绍进度。

1.user表的创办

第一大家来创制user表,user表担负存储用户消息,当用户注册和登陆时都会操作那一个表。注册用户时便是往该表中插入用户,登陆时正是查询相应的用户新闻。当然,为了德姆o的简洁性,大家的user表中的字段也是相当少的。下方就是创办user表的SQL语句。当中有五个字段,主键id是整型并且是自增的,是用户的独一象征。username字段存款和储蓄的是用户名,password存储的尽管用户密码。register_date存款和储蓄的是用户注册时间,是时间戳,而且暗中认可值是当下时刻。

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `password` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `register_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

 

2.content表的创导

创建完user表后,接下去将要创设我们的content表了。content表用来存款和储蓄用户录入的笔记,下方就是content表的创设SQL语句。从下方的SQL语句中不难看出content表的字段满含自增的主键id,记录的标题title,记录的源委content,以及外键userID和创立时间create_time。

CREATE TABLE `content` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(30) CHARACTER SET gb2312 NOT NULL DEFAULT '',
  `content` text CHARACTER SET gb2312 NOT NULL,
  `userID` int(11) unsigned NOT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `USER_FOREIGN_KEY` (`userID`),
  CONSTRAINT `USER_FOREIGN_KEY` FOREIGN KEY (`userID`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

 

 

二、iOS端基于NSUGL450LSession网络乞请类的包裹

成立完数据库后,接下去大家来封装iOS端网络央浼的共用代码。也正是说,iOS端的互连网要求就能调用本有的包装的内容。当然本有的包装的网络恳求类是行使NSU凯雷德LSession类封装的。

 

1.字符串常量、闭包回调类型以及枚举的概念

先是大家先来定义一些封装互连网央求类要运用的字符串常量以及枚举闭包回调。下方代码段做的正是那件业务,第三个框中定义了剖判响应数据时利用到的字符串常量。“SUCCESS”表示乞求成功,“FAILE”表示恳求败北等等。

其次个框中定义的是四个闭包变量,用来将呼吁结果回调给调用者。RequestStart正是开端诉求要调用的闭包类型,RequestSuccess则是伸手成功后调用的闭包类型,RequestFailed则是诉求战败要调用的闭包类型。那三者是哀告类对外交换的桥梁。

我们先付给服务端代码的兑现。其八个框则是乞求方式的枚举,首要归纳GET、POST、PUT、DELETE,当然还留了CUSTOM()自定义的强大类型。在该枚举中的description计算属性负担将近些日子的枚举对象调换到其对于的字符串,具体如下所示:

  图片 2

 

2、互连网乞求基类的创始

接下去互连网伏乞的基类,全数与互联网需要相关的类都要接二连三自此类,下方的BaseRequest就是大家网络乞请的基类。该类相比较轻巧,重要证明了上面定义的五个闭包类型的变量,然后交由了对应的构造器。具体如下所示。

我们先付给服务端代码的兑现。  图片 3

我们先付给服务端代码的兑现。 

3.网络央求类的卷入

我们先付给服务端代码的兑现。接下去大家使用NSUCRUISERLSession来封装我们的互联网诉求类,下方的Request类就是大家封装的互连网央求类,该类承袭自BaseRequest。下方是Request的片段代码,下方各样方法对应着GET、POST、PUT等哀告,能够结合者REST一同利用。在各类具体央浼的方法中会调用sessionDataTaskRequest()方法。会给这几个方法传入差异的诉求格局以及路线和参数。稍后我们会给出sessionDataTaskRequest()方法的现实落到实处,sessionDataTaskRequest()方法在这之中就利用了NSULANDLSession相关的内容提倡了互联网央浼,具体请看下方对sessionDataTaskRequest()方法的详细介绍。

  图片 4

江湖这些代码段正是sessionDataTaskRequest()方法的欧洲经济共同体布局,首先我们依照函数的伏乞路线和参数拼接UCR-VL字符串,也正是第一个框中的部分。在该部分中的query()函数是将参数实行U福睿斯L编码转变,这么些函数是从AlamoFire框架中摘过来的。然后创造伏乞用的U奥迪Q5LRequest对象。最终是创建Session对象发起DataTask任务了。当然央求的结果是在completionHandler闭包中开始展览管理,稍后会交到completionHandler闭包中的管理方式。

  图片 5

进而,大家付出诉求成功后,对json数据的分析以及对回到结果的拍卖。下方正是completionHandler闭包中的代码片段。首先对服务器重返的json数据实行分析,剖判后将json数据转变到对应的数据类型。然后根据响应报文的result字段来进展相应的操作。若是报文响应不奇怪,就调用success()闭包,不然调用failure()闭包,如下所示:

  图片 6

时于今天我们iOS客户端的互连网乞求部分就封装完了,其余实际专业逻辑的互连网央求调用上述的Request类就能够,稍后会用到Request。

 

三、登陆注册模块的支付

我们先付给服务端代码的兑现。地方的基础专门的学业甘休后,接下去大家就要来做大家相应的业务模块了。首先大家来开展登入注册模块的付出工作。
首先付诸服务端相应模块的代码,然后在付给相应模块的iOS端的完结。关于斯维夫特3.0连接和操作MySQL的详尽内容请参照他事他说加以考察上一篇博客《斯维夫特3.0服务端开辟(四)
MySQL数据库的连天与操作》,数据库的总是在本有的就不做过多废话了。

1、服务端代码

(1)、登入或注册的首先步:接收用户名

人间代码是用户登入如故注册的首先步,通过用户名来查询用户音信,从而来决断该用户是还是不是注册,如果未注册则去挂号,如若注册过就去登陆。假诺查询成功,那么就将查询的用户ID和UserName重回给客户端。用户登陆的代码和江湖大约,就是经过Select语句来同盟该用户名的密码是或不是与用户输入的同等,在此就不做过多废话了。

  图片 7

(2)、用户注册

世间就是用户注册是调用的接口达成,首假诺插入相应的用户音信,具体如下所示:

  图片 8

地方这一个代码写完后,配置完相应的路由调用上述方法,我们的服务端代码就达成了。具体路由的配置因为篇幅有限,本篇博客就不做过多废话了。

 

2、iOS客户端代码达成

接下去大家来促成iOS客户端的记名和注册的代码,下方正是登陆依旧注册的相关UI。用户输入用户后,点击下一步,会调用后台接口决断用户是或不是注册过,倘若已登记输入密码登陆,假如未注册就输入密码注册和登陆。侧面的UIViewController是公共的,五个页面,二个让用户输入用户名,三个则负担接收密码。UI比较简单,如下所示:

  图片 9

 看完UI, 大家来看一下登陆或注册的相干互连网央浼的代码。下方的UserInfoRequest类就担当所有与用户音信有关的网络诉求,从下方的代码截图中,大家能够看看UserInfoRequest的基类是BaseRequest。下方的queryUserInfo(userName)正是地点左侧的页面所调用的秘诀,用来剖断该用户是或不是是注册过的用户。在queryUserInfo()中对Request类举办了实例化,並且调用了相应的呼吁方法。何况对相应的风浪回调做了管理,具体如下所示。

  图片 10

在我们相应的ViewController中会调用上述的主意,下方正是用户在输入相应的用户音讯后点击next所调用的章程。通过相应的闭包事件,最后将网络央浼的结果回调到了VC中。

  图片 11

时至昨日大家iOS客户端的记名就贯彻告竣了。
别的的代码和地方的笔触类似,在此就不做过多废话了。

 

本篇博客,就先到那时吧,其余代码和上述的笔触一向,依据上述的思路去实现笔记的增加和删除改查就能够,在此就相当的少废话了。完整德姆o请移步github相关链接。

github分享链接: https://github.com/lizelu/PerfectDemo 

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图