Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客。固然,咱们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现。Perfect框架是加拿大一个创业团队开发的,目前是Perfect2.0版本,关于Perfect框架,下方会详细的介绍。本篇博客会演示一个完整的Demo, 该Demo彻底由Swift3.0开发,其中包括服务端和iOS客户端,数据库采用的是MySQLhtml

进一步说,本篇博客将会演示一个使用Swift3.0开发的记事本,固然该记事本的服务端和iOS端都是使用Swift 3.0开发的。该记事本包括登陆,注册,添加笔记,更新笔记,删除笔记以及查询笔记,简单的说就是对笔记的CURD操做。本篇博客算是Swift3.0服务端开发系列博客的开始,咱们先经过今天这篇博客总体的看一下Perfect框架能够作的事情,而后一步一步的开发出一个完整的项目。git

本篇博客先对Perfect框架进行了简单介绍,而后演示由Perfect开发的Demo, 最后给出相应Demo的部分技术实现。github

 

1、Perfect框架简介数据库

Perfect框架是目前比较完善的Swift服务端框架之一,固然其余的还有Vapor等其余的开源框架,横向的对比了一下,仍是Perfect的功能全面一些,目前Perfect的最新版本是2.0,由加拿大一创业团队开发并维护。Perfect框架也是开源的,在Github上能够找到相关的源代码(Perfect-Github地址:https://github.com/PerfectlySoft/Perfect)。Perfect的官网地址:https://www.perfect.org/,官网上有相关的Demo以及使用文档,关键是其开发文档有中文版的,这一点仍是比较好的,官方开发文档地址:https://www.perfect.org/docs/index_zh_CN.htmlswift

  

由于Swift目前最新的版本是3.0,因此Perfect2.0只能在最新的Swift3.0版本上进行编译。固然Swift语言支持Linux,iOS和Mac OS,因此Perfect框架也能够在上述的三种系统中进行编译。咱们可使用Perfect开发Web应用,API等服务端应用。更多关于Perfect框架的详细内容,请移步于Github或者官网进行了解,在此就不作过多赘述了。xcode

 

2、示例展现浏览器

接下来咱们先来看一下使用Swift3.0开发的服务端和iOS端的小Demo。在博客的开头咱们也提到过,咱们要展现的Demo是一个简单的笔记。包括登陆、注册、笔记的增删改查等功能。咱们的服务端和iOS客户端都是使用Swift3.0来实现的,固然服务端就是使用的上述的Perfect框架。接下来咱们总体的看一下Demo的效果,后续的博客会给出更为具体的实现方式。服务器

 

1.Demo功能介绍框架

下方就是咱们Demo运行的具体效果,首先输入用户名点击下一步,若是用户已注册,让其输入密码登陆。登陆后进入笔记列表页面,能够对相应的笔记进行增删改查操做,具体作法以下所示。下图左边就是iOS客户端运行的效果,右边就是MySQL中的数据更新状况。数据库设计

由于Demo的功能比较简单,因此咱们数据库的表结构也是很是简单的,user表中存储的就是注册用户的信息content表中存储的就是笔记的相应信息,在content中有一个外键是userID, 每条内容经过userID外键与相应的用户想关联。换句话说,contentId与userId是一对多的关系。关于该Demo的数据库设计细节,后期会详细的介绍。

  

 

2.示例的项目结构

下方就是服务端+iOS客户端的目录结构,固然项目比较简单,没怎么分层。iOSClientForPerfect就是iOS客户端工程,PerfectTemplate就是服务端的工程。这两个Project位于同一个WorkSpace中。在PerfectTemplate中会有一些依赖的库,Source文件夹下除了PerfectTemplate文件中的内容外,其余的都是依赖包,这些依赖包能够经过Package.swift文件进行配置。

  

下方是本工程中的Package.swift文件中的内容,也就是本工程中所依赖的包。

  

 

三、服务器log日志记录

从上述依赖的包中咱们能够清楚的看到依赖了日志过滤以及日志写入的包,若是你的服务端要支持相关的日志记录功能的话,那么就须要添加上述的这两个依赖包了。下方就是咱们工程记录的日志文件。主要记录了本工程的请求和相应以及Sql执行的相关信息,以下所示:

  

 

4.服务端API组织结构

下方就是本篇博客所演示Demo的服务端API。数据传输的格式为JSON,iOS客户端将会对服务器端返回的JSON进行请求。全是POST请求,相应报文包括list,result以及errorMessage。list中存储的就是从服务端获取的相关数据,而result中存储的是接口请求状态,SUCCESS标志着请求成功,FAILURE标志着请求失败。当请求失败时,errorMessage会有相应的报文信息。固然这种API是比较常规的的作法,固然在请求报文中,应该添加上公共报文的,公共报文中能够添加token等公共信息,固然本Demo中没有添加,下方是部分API

(1)、经过用户名查询用户是否存在接口

请求方式:POST

请求地址:/queryUserInfoByUserName

请求参数:

  

响应报文:

  

 

(2)、用户登陆或者注册接口

请求方式:POST

请求地址:/login,/register

请求参数:

  

 

响应报文:

  

 (3)、获取相应用户的笔记列表接口

请求方式:POST

请求地址:/contentList

请求参数:

  

 响应报文:

  

其余的就不一一的展现了。上述的Demo就先到这儿,等咱们介绍完Perfect的基本知识后,再对上述的Demo的具体实现细节进行剖析。本篇博客对上述Demo就不作过多赘述了。

 

 

3、Perfect框架的获取和编译

上面算是Perfect框架的引子, 接下来我正式的进入Perfect框架的主题。固然咱们以Mac OS下的Perfect为准,若是你使用的是Linux系统,Perfect官网上有相关的配置过程,关于Linux下的Perfect在此就不作过多赘述了。

 

1.获取Perfect框架的模板

首先咱们从Github上Clone一份Perfect框架的模板(PerfectTemplate:https://github.com/PerfectlySoft/PerfectTemplate)。具体执行命令以及执行结果以下所示:

 git clone https://github.com/PerfectlySoft/PerfectTemplate

 cd PerfectTemplate

 ls

  

 

2.编译模板

PerfectTemplate目录中有一个Package.swift文件,其中能够指定工程的名称以及工程所依赖的包。首先咱们打开Package.swift,指定咱们工程的文件名。具体以下所示。

  

指定完工程名,接下来就该编译咱们的模板工程了,下方是编译并执行上述工程的命令。由于首次编译时须要从github上下载相关的依赖包,因此首次编译的过程是比较漫长的,等待一段时间,编译和执行的命令以下:

 编译:swift build

 执行:.build/debug/ZeLuLiPerfectDemo

仍是那句话,首次编译的过程会比较慢,下方就是首次编译是须要下载的各类依赖包,而后再进行编译的过程:

   

编译完成后,会提示你连接并运行的命令,若是执行该命令后,你的Perfect服务端的服务就启动了,以下所示:

  

执行完毕后,咱们就能够经过浏览器访问咱们的Perfect服务器了。默认端口是8181,因此咱们访问的本机地址是localhost:8181。下方是访问上述地址返回的具体信息,以下所示:

  

咱们能够在Source文件夹下的main.swift文件中对咱们的服务进行相关的配置,咱们能够改一下端口和返回的内容:

   

从新编译并运行,结果以下所示:

  

3.生成Xcode项目

编译并运行成功后,咱们可使用Swift3.0自带的包管理器,生成一个Xcode项目。下方就是生成的Xcode的Project文件的命令

 swift package generate-xcodeproj

运行上面的命令就会生成相应的xcodeproj文件,咱们就可使用Xcode来管理咱们的项目了。由于Project框架仅支持Swift3.0, 因此咱们须要使用Xcode8.0+版原本打开生成的xcodeproj文件。以下:

  

你就能够打开上面生成的xcodeproj文件了,能够经过Xcode来编译和运行咱们的Perfect项目,固然要选择Mac运行。运行完毕后,咱们的服务就启动了,就能够在浏览器中进行访问了,以下所示:

  

本篇博客就先到这儿,下篇博客仍然会对Project框架进行介绍,在使用该框架时,咱们还会涉及一些Perfect框架的部分源码的解析。

Perfect完整Demo的github分享地址为: https://github.com/lizelu/PerfectDemo ,在之后的博客中,咱们会陆续的对该Demo的具体实现细节进行讲解,本篇博客算是一个Perfect框架的概述。 

相关文章
相关标签/搜索