swift vapor?? 哈哈哈哈。。。。。不介绍了。自己的服务器,就从这里开始吧。
一、生成vapor服务器工程,请参照:官方文档
这里我还是写一下吧:
安装:(Xcode8)
在终端上运行
$ curl -sL check.vapor.sh | bash
$ curl -sL toolbox.vapor.sh | bash
$ vapor --help
新建工程:
$ cd ? /Users/jiangkui/Desktop/Demo(请找个放代码的位置)
接着:
$ vapor new HeHeVapor1
这可能需要等待一下下。。
在Xcode上打开这个工程,并且可以直接编译运行。先cd 到工程文件中
然后:
$ vapor xcode -y
打开Xcode后瞅瞅目录:
嗯,Config的扩展,Droplet的扩展,Routes也是个扩展有木有。
看看代码:前俩没啥好讲的吧,关键在Routes,原来Get Post请求是在这里啊。
下面是VC,Models,具体啥用,在这里就不细细分析了,
先看main:
初始化一个Config。调用了一个扩展方法setup(),进去瞅瞅:应该是一些初始化数据库关联Models的,不管了
接着初始化了个Droplet。调用了setup(),再去看看:哦,定义了方法。
进方法看看:原来就是Routes.swift。
官方demo就是这样了,咱们跑一下??嗯嗯,跑一下
选择运行
ok,run就成功了。这一部分,几乎没啥好介绍的,成功率高达99.9%
如果出现报错,无法运行,请重复vapor xcode -y? 也可以重复所有步骤。
咱们来一波:http://localhost:8080 或者? 0.0.0:8000
咦,怎么啥也没有?回头看一下Routes,如下 ?添加:
在访问,欧了,出现了“你好”。接着访问http://localhost:8080/hello,结局已经可以预料。Post请求不外于是。
二、上传服务器heroku?
我们的服务器好像已经搞定了呢,但是怎么能一直localhost呢,太没有挑战性了呢。
于是乎我们想体验一下上传服务器的刺激,极大大一部分同学到这里gg了,为啥呢,发现所有的简书都上传heroku,结果heroku连注册都不行------>请翻墙。(163.com,qq.com请换邮箱,你要用foxmail越过,哈哈哈)<这里我为啥也用heroku,因为我也是按照这些大神的路跑一趟嘛>
闲话少说,翻完几座墙,越过数条河,终于见证到了奇迹的时刻,over注册完了。
首次建立heroku,打开终端,cd到项目目录:
$ heroku login
$ git init
$ git add .
$ git commit -am "xxx"
$ vapor heroku init
/****/
1.Would you like to provide a custom Heroku app name?
你需要自定义你的Heroku app名字吗,当然需要,输入Y
2.Custom app name?
'你的APP名字,例HeHeVapor1'
如果这个名字可以用,接下来的步骤中会返回一个端口连接例如:https://hehevapor1.herokuapp.com/?| https://git.heroku.com/hehevapor1.git
Would you like to deploy to a region other than the US?你愿意把它部署到除美国以外的地区吗?
N
3.Would you like to provide a custom Heroku buildpack?
是否需要编译空间 输入N,
4.Are you using a custom Executable name?
N
5.Would you like to push to Heroku now?
Y
稍等会,推送完成之后就可以访问你的远程heroku服务器了
如果出现错误,请重复vapor heroku init
时间有点长,吃顿饭先。
欧, no!终端不是说ok了吗?。?!我迫不及待的访问了一下链接,为啥这个样子????
内心充满了fk,在终端里heroku logs一下,查下日志,fk看不懂。去自己的heroku看下项目日志,fk一样的东东不懂啊。但是,其他大神都开讲添加PostgreSQL?数据库了。是不是因为没有数据库的缘故呢?
先不管了,试试水先。
三、heroku添加数据库:
添加数据库
$ heroku addons:create heroku-postgresql:hobby-dev
查询数据库链接《这里需要记录一下次数据库链接请保存好,要用哟》
$ heroku config -s | grep DATABASE_URL
heroku搞定,那么我们的项目是否需要调整呢,废话。
xcode打开项目:
其实项目好像已经有了sql,但是我并没有尝试,先PostgreSql,毕竟有教程吗。
打开Package.swift
在dependencies数组里添一个
.Package(url: "https://github.com/vapor-community/postgresql-provider.git", majorVersion: 2, minor: 0)
<注意这是个数组,别少写了逗号,哈哈哈>
我们关闭xcode ,打开终端,切换目录,再来一次 vapor xcode -y
ok,搞定。接着打开蓝色的文件夹的fluent.json,看到"deiver"了吗?value换成"postgresql"
然后添加一个文件:postgresql.json如图:
这是个字典,后面就是刚刚让你保存的数据库链接。相信,你还记得。不记得,请重新来一遍查询。
接着,咱们打开Config+Setup.swift
看到import FluentProvider了吗,这玩意儿有啥用,先不管了。
换成import PostgreSQLProvider
下面有个func setupProviders()
try的内容换成 addProvider(PostgreSQLProvider.Provider.self)
不要问我为什么,我刚刚也是一知半解。
ok搞定了,咱们在本地run一下,咦,居然没有问题耶,咱们再上服务器一波
打开终端,cd到项目目录
四、更新heroku的服务器代码。
$ git commit -am "加了新东西"
$ git push heroku master
搞定,等个几分钟,在请求看看。。。
当然也有小伙伴居然提交报错,一堆难以理解的错误,有种很粗暴的方法,重新创建一个新仓库。从heroku login下一步开始。
ok,同学们,经过兄弟一通瞎搞,终于搞定了自己的vapor。
注:可能有很多疑问,为啥添加数据库,就能上传服务器了呢?FluentProvider
是什么呢?不用PostgreSQLProvider行不行呢?还有那些controller里面那一坨有没有用呢?等等这些问题,暂时我也无法回答。谢谢喜欢探索的,给予答案。关于PostgreSQLProvider的许多用法,暂时也不是很清楚,希望有大神有好的案例。有兴趣的可以瞅一眼本人的探索Demo----《Vapor1?》,已经写了注册、登录、修改密码,这些小功能。
五、是不是少了点什么?
没错,有童鞋是看着vapor的官方文档来的,那文档真心没有一个由浅入深的完整过程。不知道会碰多少壁。但是这并不重要,重要的是为什么 七牛 没有swift的上传图片的服务器代码,我就日了狗了。连go的服务器上传图片代码都有,居然没有swift,脑阔疼啊。这不重要。重要的是,我想上传头像啊。好了不扯淡,咱们接着研究例如:数据库 啥的高级用法吧。。。下篇文章再见。本人的测试小demo
当然还有(Perfect框架)?等着童鞋们一一尝试。