00:00
大家好,我是学习园地的特约讲师高若峰,上节课咱们认识了一下阿克奥斯,那阿克奇奥斯呢,简单的理解呢,就是阿贾克斯的一个封装用于异步请求的,那么我们异步请求的是什么?那这节课呢,我们就来看一下为X access准备接口阿例,因为我们用它异步请求请求的是服务器,对吧?那服务器呢,我们请求一个输出模板的文件没有意义,那基本上是请求接口,把数据接层的格式给我们返回,回来,返回到哪呢?返回到阿,如果由阿贾克斯取出服务器接口的话,那返回的数据呢,以阶层格式返回给阿贾克斯,然后。返回给,比如说返回给阿,那我们再用vuee或者react,或者V小程序他们的编程方式把它放到页面上。所以呢,现在我们在写项目,基本上有两种编程方式,一种呢是模板式的,也就是我们从数据库取完的数据,我们发送到模板,当然模板也是服务器端的,对吧?在服务器端呢,将模板里边占位符,占位服换算成就是换成我们想要的数据,然后呢,再把整个模板发送到前端,是在服务器端处理完的。
01:09
而接口呢,访问接口不是这样的,我们异步请求用R是什么呢?是我们用它请求服务器,服务器呢,把阶层数据给我们反馈在R里面。然后我们再用这种再结合we react向页面上摆放数据,是在前端处理的,这样的话,我们现在做的项目如果使用接口的方式,这再结合这种异步请求的方式,那我们就做的是前后端分离的。而用模板的那个方式呢,也不算是完全的强互分离。因为我们必须必须是在服务器端渲染,然后之后模板的数据都摆放完之后,是把整个的HTM代码给前端前面显示的。而使用接口方式呢?是服务器端只处理数据,接口提供接口,那么接口的数据怎么摆块是前端的事,那强端分离有助于什么好处呢?那么我们学VE和react,目的就是为了做前后端分离的这样的一个项目,数据在前端,由前端的语言进行页面上渲染去摆放,这样好处在于什么?
02:08
我们同样的一个后端接口就可以给我们提供,PC端可以使用H5端呐,对吧,小程序端呢,呃,APP啊,对吧,都可以使用同一个接口。我们只是在前端用不同的语言去访问接口就可以了,后端是同一套数据,如果是模板式的话,那我们有可能也会复制程序来去写,这样更新啊,维护啊都是比较麻烦的,所以现在主流的编程方式都是接口式的编程。接口式变成,那我们先来看一下我们以前做的项目,比如说嗯。当然,服务器端接口跟语言没关系,什么样的语言都可以做服务器端接口,你用Python,用note GS,用PP,用Java都可以。但是呢,做接口,我们请求接口,这个接口呢,最好是符合rest for API这样的一个规范。它只是一个规范对吧,只是大家照着这规范来做而已,如果你不按规范来做,你独特的规范不是不行,前后端都你自己写,对吧,自己熟悉这个套路,但是呢,在团队合作中。
03:09
对吧?如果你不按规范来的话,那别人还得先学你的规范才能拥有你的程序,比较麻烦对吧?所以呢,建议大家在学习接口之前先了解right后规范,这样的话我们在制作接口的时候,URL的格式对吧?使用协议比如说HTTP协议啊,还是HTPS协议啊,对吧?版本接口都有版本的,我访问是呃版本一的这个接口,如果后台升级了对吧?访问版本二的接口还用版本一的接口存在,这样的话,我程序在调用不同版本的时候可以切换。返回的状态码对吧?比如400代表什么,505代表什么,返回值是阶层格式还是插面格式?当然现在通用的都是阶层格式,差面格式也有用的啊。将微小程序它就支持叉L格式对吧,但是我们还是建议使用杰森格式,这个返回值的规范就是杰森的那个格式规范里边代表有装门码,成功是什么格式,失败什么格式是这样的,还有请求的一些条件的规范,也就是我们参数的那个规范,它都有详细的描述,这是在接口课程里边咱们有讲过,那大家就了解这个接口,那这里边要大家注意的是我们在请求接口的时候,我们这个HTTP请求的动词是有规范的,比如说get的请求。
04:14
我们使咱们向服务器提交方法的时候,提交方法的时候,比如表单可以指定get,也可以指定post,对吧,这两种,那么我们使用接口呢,还可以使用什么put touch,还有delete,有这么多,但是能通用的时,Get和post这两个,其他的呢,咱们这个啊,R7这个都是支持的,那比如说get请求,一般什么样的请求,我们get呢?那后台执行对应的执行思数,也就是select里就就是从服务器查询资源,单个查询,或者是呃,或者是多长对吧,都是select post的呢,一般的我们就是像服务器添加一个数据,创建服务器的一个资源create对不对,一般的我们比如说插入数据exer也不用post。Put呢,就是更新,完完整整的更新,比如说你表单的数据,所有的一起更新对吧?Part呢是表单里的数据,比如说我就更新一下用户名对吧?当然我们这两个一般的呃,都是用put对吧?那这两个一般也都不用,都用post去使用了,在好多开发的时候都用带了个post delete就是删除的时候发生一个请求,专门用于删除动词一发送,这个对应的so是独delete,当然这都是后端写接口的时候这样的一个规范。那我们来看一下模板式的编程,我们前面写的项目就是ewsh,如果大家呃是学PP的成员的话,那你可以去了解一下那个项目,咱们用的是呃composer自定义的框架,结合MVC模式去编写的一个程序,是模板式的,咱们用模板式的,那咱就把这个项目部分改成接口,用于咱们学习action。
05:36
呃X这个呃工具后期呢,我们用VE或者是做项目的时候,再完完整整的使用整套的接口,现在呢,咱们就把呃模板式的编程呢,改成这个接口,按照这个规范去改,简单了解一下。看一下这是我们原来写的,呃,Ew,当然了,是在服务器端上服务器端,那我们就得启动这个服务器,我用的是问server来,我直接访问回车就打开了,然后在这块有一个由红变绿,就是启动成功,好启动成功了,然后呢,我们也在这个里边去绑定一个假域名。
06:11
在这里边我们也去绑定了一个假疫苗。打开你看绑定了什么shop,点一丢work.cn这个,那我们现在就可以打开浏览器,我们访问一下。shop.shop.e.C这个这就是我们做的一个简单的案例,用模板做的一个完完整整的一套商城。是这样的一个情况,二级页面三级页面你都可以去点一下。这是没问题的,你都可以去自己去去看一下。就是这个,那这是用模板画的,我们看一下代码是不是模板画的啊,我们打开我们这个项目到ew里边。嗯,我们先打开这个入口文件吧,这个用PP打开吧。启动功能的。
07:04
嗯,这个。打开打开。降。嗯,打开这个EW,你这个项目王文章打开了,你看我们这个请求的入口文件在这里边,用的就是这个路由里边,你看我们可以用get请求对吧,服务器端的友情链接对吧的操作,服务器端的呃,超级用户的操作,还有处理登录的操作,全是用这种,嗯,Right for规范,Right for API规范去选择这种请求。那因为大家有可能是学Java的成员,或者是学Python的,那我这里边就不多说了,他们的请求规范其实也是这样的,那请求这里边就会出现刚才咱们那个结构,那现在我把它变成API的结构。这是模拟的在本地服务器啊,你看我把刚才的请求的,因为这里边儿所有的操作都是用模板操作的,所有操作都是用模板操作的,细节我不多说了,如果大家想了解这些项目,你可以去查找一下ew这个项目就可以了,那我们现在复制一份。
08:03
本周西固制。呃,复制整个项目不的复制啊,复制一份项目又没有改变原来的项目,流的很重,易复制一下。我们叫e shop,嗯,APIAPI,当然我复制这一个过程也是你你从我这个项目下载,你自己安装的这样的一个过程,我复制了一下,然后呢,我把它用一个什么域名去改写呢,我这块加一个。给它改成APIAPI。当然了,这个域名叫API,呃,Ew,呃ew shop或者什么都可以啊,我叫API,原来shop这两个访问它不冲突,保存一下,这样的话我们打开一下命令行CMD拼一下看看啊。拼一下,因为这个是不用重启任何东西的api.e啊叫edo work.c好是可以听通的,没问题,证明我们这个域名加的是有效的,那我们就可以把它关掉,对吧,不用它了,然后呢,我们拷贝过来之后,我们需要访问是这个项目,对吧,原封不动的,那我们就需要再呃配置一下虚拟主机。
09:04
找到我们这个里面,找到我们的阿帕奇,找到我们的阿帕奇的配置,虚拟主机的配置文件,这是原来配置ED worker的shop ED work了,对吧,我们复制一份。粘贴一下端口还是用八零端口我不变,这样的话可以默认端口,当然API端口你可以随意的改变啊,这个端口你改成什么都行,然后我们这里边变成API。API。这块换成API,那我们拷贝了一个目录结构,这项在哪呢?不是这个项目了,是API到这个项目。这块呢,API好。保存一下,那我们就可以关掉了,那如果想让它生效的话,我们必须得重启一下它,因为改变的是阿帕奇的配置文件,那我重启一下所有服务MYSQL什么都重启一下。那就换了一下项目的目录和请求的URL。就换了一个这个,那我们看由红变绿它就启动完了,由红变率启动完了,那我们再打开,你看我们现在是这个域名访问的,到现在再换一个目录是API。
10:01
呃,W。这样的话一样可以给我们访问出来一样,可我们访问出来看一下,这是可以的啊那。这是可以的,那我们现在需要把它变成接口式的,那我们现在就不用这个项目了,我们文件我们打开一个项目。打开哪个项目呢?嗯,新建吧,这因为原来那个没见过,那我们就文建新建一个项目,哪个项目,那我们这里边选择选择我们这里边3W下边的。看见。Yes。嗯,就在这个窗口吧,省得改两个代码对吧,你看变成了这个项目切换过来了,对不对,那接口什么东西,这个项目现在原封不动,只是我用工具把它切换过来了,切换过来它有这么多请求接口这样的一个情况,那我们现在想干嘛呢?我们现在想把它改变,因为这里边儿的咱们随便找一个模块啊,任何一个模块,比如说在APP里边我们找控制器,你看啊,这里边分为前后端和前端,那如说我们看后端,因为前端呢,都是带着请求过去,没有几个插入的啊,那我们看后端,后端里边呢,比如说我们找。
11:07
有心连接吧,啊,这个比较简单一些,咱们就用简单的一个模块,你看这里边的所有数据,比如说过去有心接的列表,那么我们是,呃,创建dot DAO对象对不对?记住DAO对象,然后查询数据,然后分配给模板,看到了吗?把数据分配给模板,然后我们原来的方式呢,在模板里边,也就在视图里边,艾密下边我们找到友情链接,你看首页就是ex。那在这里边把数据用模板的方式,不是用vuee的方式,你看这都在模板里边遍历所有的数据这样的形式,对吧?这是在服务器端,那你都得用PD代码来写,对不对?那我们改成接口呢,那就不用说限制语言了,因为你发送接通格式Java ipad呢,所有的都可以用,服务器端和服务器端可以用,那浏览器端和服务器端也可以用,这是变成接口的一个好处。那我们现在改造一下,现在想把它改造,因为我现在是用咱们用后端做接口,对不对,后端接口呢?因这后端必须得登录之后才能访问的,那我把登录的那个权益删掉,咱们以后做vuee项目或者是艾项目,或者V小程序项目的时候,咱们再单独的去做这个登录,这里边呢,咱们先不限制了,找到这里边的控制器,控制器里边应该在公用的控制器里面。
12:15
这个公用的工器里面这个判断是否登录的,我们把它注释掉,或者你把它删掉都可以啊,那我们现在把它注掉,再回到这里边儿,比如说。获取数据这样的一个过程,那这个接口我们是怎么现在不是接口这个正常我们是怎么访问的呢?我们在in带点M里边找到这个情链接,你看是通过访问这个域名下边的link怎么去访问的,也就是是。我们在这块。在这。在这会下边访问艾密下边的link,通过这个访问的这个列表,通过这个访问这个列表,当然我现在把权借下去了,所以呢,你看这没有关于你谁谁谁对不对,完事我都可以进,对你权限的,我删掉了,你是可以进来的,对吧,那现在我不想要这个界面了,不想要这个界面了,那我就需要怎么样,我就需要在这里边,我把这块显示模板的这个去掉。
13:06
对吧,当然你可以注意掉啊,你我这复制一份没关系,然后发送的标题我这都去掉,然后呢,呃,分配里模板的数据都去掉,那现在都一去掉,它就不加载模板了,那我这块再访问的时候怎么着,诶就是空了对不对,就是空了,就是空了,现在呢,我想把它以什么以阶层的格式输出这个数据,那就是一个接口对吧?那如果我这么直接输出这个是一个数据。PT加加,我们现在打印的这个是数组BA,那数组呢,它是PP的数组,这种格式呢是不兼容的,那我们这块要变成输出,把它转成阶层或者叉L,那么所有的语言都可以用了,对不对,哎。我们现在要心下,你看只是输出的这样数组,那我现在不想要这种数组,那我就现在需要把它变成杰森的格式输出,那我怎么办呢?I克输出接son,这里边有两个,一个是呢,把数组转成杰森,一个是呢,把杰森转成数组这两种格式啊,那我现在类似于我们串线化,那这里边把F。
14:01
来变成积分格式,这样的话,我在访问的时候,你看一下就变成了这样的积分格式,你看也是一个积分数组,接分数组里边先用这个,当然了,他会转接分的时候帮我们把什么这个用编码给我们转了,对不对?那我们到时候用的时候再转回来就OK了,你看这是呃,没问题的,就可以输出这种阶层的一个数据,当然了,你标准的right for API格式呢,你还可以把这里边再添加上一些,比如状态成功啊,或者什么样的状态再发过去,咱们简单实例就直接这么写,然后呢,当这个排序就不需要了,那我们这块再做一个什么呢?我们用R奥的时候,模拟的时候还要传一些参数,那比如说我们就传一些查找的参数吧,查找参数那我们到别的里边找一下。商品商品这里边有,你有别的里边,当然你可以用商品这个做啊,或者用什么来做都可以啊。来呃,到另存里边,这这我们就按这个商品名称来查找这个渠道,这个是做分文件上面的,不管,如果内部存在我们就这个,然后我们把这里边外条件放进去,当然不光是有这个外条件,我们还需要什么,呃,我们再复制一下,比如说我们还可以按ID查找。
15:09
如果ID存在,我们按ID查找,当这块我们就不是模糊查询了,我们按ID查询这个ID就可以了啊保存一下,现在如果我什么参数都不加,返回还是这个只不是排序,我删掉了它还是用这个,就是默认的这个顺序对不对,你看这里边ID有一页有8I有九啊对不对,你比如说我这里边问号。ID等于一。你看查找的ID就是一的,对不对,是这个,那现在我现在查找的不是ID等于一的,你比如说我存一个。Name等于学习园地的,你看当然这一这块也是学习园地啊,他找出这个,哎,找出这个名查不光是一,你看九名字里边也包含学习为例,对吧,当然大家名字这编码咱们看不出来,但是你看查出是两条对吧,两条数据到时咱可以用posman,呃,试一下。这样的这个接口我们做了,当然了。
16:01
所有的我们想把它改成接口的就都不用模板了,也就是这里边儿这个项目整个的这个视图这部分我们就不应该用模板来写了,我们应该把整个文件夹都删掉,对吧,然后自己用vuee写或者react写就可以了,能这个写啊,当然这两个可以分开,是两个服务器的,对吧,但是容易跨域,先放在这,那先不管它。那这写完了,那比如说我们再做一个这是盖的请求的,对吧,我们看入口文件可以看到这是用盖的请求的,你比如说添加添加,那我们这块是任何请求,那我就改成post吧。POS的请求了,你看啊,那我们就可以再模拟一个POS的请求添加,对吧,那这块只能用POS的请求了添加了,那我们同样把模板的这个地方都去掉,然后如果插入成功怎么办?如果插入失败怎么办。逗号。解读,去掉。当然了,这块还有一个判断是不是提交,当然POS里边也得加这个,等我这个就留在这块加一个,否则你看啊,然后这里边艾输出用杰森这个我们转码一下,转成一个什么呢?你比如说一个数组。
17:11
你直接这么写吧,一个数组里边我放两个,比如说s sta状态,假如说插入成功,就直接插入数据了,那我们后边输出一个成功的,那这边失败,我们状态码,比如说是500失败对吧,然后呢,我们提示一个消息。啊,Mess消息或者是一个其他的,你叫什么名字都行啊,然后我们这块写着添加。添加友情链接。失败对吧,不说什么失败的原因,这样的话用户容易攻击对不对,那如果是。在这块都执行执行完了,如果插入成功的话,我们在这里边写,那就是比如说200吧,代表成功添加友情链接添加,那我们就写一个添加成功,否则我们这块。来一个。
18:00
多好多好。加上括号会不忘加括号,这不像GS它会自动,嗯加号这里边必须加,那比如说这块来一个400对不对,添加失败。失败,嗯,当然我们这个现在你用用地址栏默认是盖的请求,对不对,你得用表单才能模拟这po请求,咱们会用POS慢来模拟,所以呢,咱现在就不管了,下载可能会讲POS慢,然后用那个去模拟一下,这成成功,如果有问题的话,咱们再改一下,咱们只刷新一下看有没有错误对不对,没有错误提示,那就证明我们是呃成功的,也是把原来添加的那个模板改成接口了,那咱们用vuee去去表单,然后呢用嗯,XS去提交,这样的话一样能把数据添加成功,那咱们就做这两个接口,那平时咱们在开发项目的时候呢,比如说像我们现在正在开发的线上项目,我们会写这样的一个文档,这个呢是EP play项目,也就是咱们直销云做的那个网校系统那个项目。也就是类似于咱们现在学学地用的这套系统,那一共呢,有500多个接口吧。你看比如说这是所有后端的什么认证体系啊,对不对,然后呢,结构啊,作业管理啊,前端啊,对吧,这里边儿都有什么微信啊,什么菜单啊,对吧。
19:10
那接口呢,肯定不会说让你去看的,这只是我们写项目的时候一个文档,还有这考试系统什么的东西全是在这里边都有,只是后端的,当然我们还有啊,还有前端的。哎,前端的个人学习中心啊,文章啊,注册登录啊,对不对,笔记啊,所有东西都是接口,所有东西都是接口。看这里边都是。还有。这么几个大类,还有小类录的,对分类的等等。那比如说这里边呢,像呃文章管理,你看这里边用到了什么协议使用的touch,这里边就是符合这个规范对吧?置顶的推荐的删除的修改存列表有get有put对吧,有post。等等这些一个文章管理的,我们把这些协议都用上了,对吧,而不像咱们有些新入项目,既用了只用了get和什么,只用了get和post,但是呢,模拟学习的时候只用的get post那东西是没问题的,然后这个接口也是提上不久。
20:06
啊。嗯,这就是我们这节课给大家要讲解的,为应用准备好接口案例,咱们准备了一个概一个post,这节课呢,还需要你了解是呃,For这样规范,然后呢,你写好的接口,假如说你是服务器的开发人员,或者是咱们前端开发人员用别人接口都是这样的接口,但这样接口怎么用呢?我们需要去测试。对吧,就去测试。里边有接口就很简单了,这个接口里边的参数啊,什么类型啊,对吧,是这样。好,谢谢大家。这节课我们。
我来说两句