00:00
在登录注册完成之后,继续完成我们的用户管理的功能,我们先去写后台的这些功能,后台的这些功能写完之后才可以去写,强调这些,因为有些数据我们要后台添加才可以。在写用户管理的时候,我们先创建一个用户管理的控制器。在我们的。这个虚拟机里面。我们的项目下创建控制器。创建到啊俄德下面有色CTRL。创建完成之后。在http controller。这里面就会给我们生成了一个用户的CTRL啊,但是我们发现他这个方法是空的,对吧,然后自己去写方法。其实我们可以怎么办呢?去创建这个资源控制器。对吧,我们学这个拉的时候,控制器里面有这个资源控制器,我们把这个删掉,重新创建。
01:01
Delete。好,创建资源控制器呢,就是在我们创建控制器的时候啊,加上杠杠resource啊,当时我们是用于API的一个资源控制器,所以我们使用杠杠API,这样的话,创建的资源控制器是不包含create和啊data这两个,就是说页面使用的这两个方法啊,只剩下我们就说API需要的一些方法。啊,创建完成之后,这下再来看一看,就算是不是给我们多了一些我们API用的的一些方法。接下来呢?嗯。空气有了,那去定义我们的资源路由。在我们的nin里面去写。啊,这个用户管理肯定需要登录才行,所以我们写到这里面,把我们的分组的注释写好啊,用户管理啊,接着写上用户管理啊资源路由。
02:04
啊使用API,那自源路由使用什么方法呢?在里面。我们之前写页面的时候找一下路由这里。资源路由,使用这个resource去啊注册。但是呢,因为是我们是API,所以里面有一个API resource。啊,是控制系的啊。啊,API resource对吧,但是啊,这个API resource呢,它是root的这个门面的这个方法,所以我们这里使用的是订购API的这个API方法啊,这时候我们怎么办呢?直接写resource就可以了。它呢会自动去帮我们忽略掉这个create和E的一个路由,来我们定一个user。好使用谁呢?我们定义资源控制器后面就不用去写这个数组,直接写资源控制器的这个类名就可以。
03:02
User controller。Class啊,这样就可以,接下来我们检查一下啊,PPIDPI。可以看到啊,给我们创建了这四个。啊,User相关的一个资源路由,是不是没有那个create和这个方法。但是我们用户要写的功能有什么呢?有这个用户的列表可以用啊,这个user方法。然后添加用户,我们不写,所以这个方法我用不着。啊,查看一个用户的详情,这个我们需要啊,虽然我们图里面没有写,但是啊。是需要一个查看用户详情的,比如我们后台在管理用户的时候,想看一看这个用户的详情,对吧?啊用户的更新啊,这个我们也不需要我们尽可能的不在后台去更新用户的一个数据。好,还有用户的删除也不需要,用户的话,我们可以通过禁用和启用来去管理删除的话呢。
04:05
啊,因为有我们的网站会涉及很多用户的一个数据,你要去删除的话,牵连的会比较多,比如用户相关的订单对吧,用户的这个他的相关的评论怎么处理,所以用户我们直接去禁用就可以了,不是直接去把它给删除掉啊,所以啊,并不是所有的都需要啊,这时候我们可以去加一个限制啊。Resource还接收第三个参数。可以让我们去添加一些额外的选项,它是一个数组,我们加一个only,就是我们要使仅仅使用的一些路由,这是它和我们之前使用拉的这个它的resource的区别,拉入的resource我们可以直接在后面去写这个。啊,链式调用红对吧,但是。啊,定位拍的这个我们要写到第三个选项里面啊,仅仅使用谁index,还有秀啊,看看我们还用到什么方法index秀。
05:00
嗯,就用到这两个方法啊好。那其他的不用的,我们就可以删掉了,其实。把这些都删掉啊。注释,写一下用户列表。用户详情。嗯,那我们还有其他的一些啊功能,比如说禁用用户是不是,所以这时候要去再去写额外的一些通信,比如说禁用。禁用。啊,然后。然后也可以启用用户,他们可以使用同等方法啊。好定义一个。Post的一个touch的一个方法吧,算是对用户的一个小小修改。
06:04
User啊,连上我们的路由参数user。接下来。CK啊,锁定。传上我们控制器user control。Class,使用什么方法呢?使用lock方法啊。啊,这时候我们要去这个空隙里面去创建一个啊look方法。禁用和启用用户。这时候啊,再来查看一下我们的路由的一个情况。API root。啊,是不是只有这两个我们的这个资源路由了,而且这个是我们的。
07:03
呃,禁用和启用的一个方法,使用的是这个对吧。接下来开始啊,去完善我们的功能。首先啊,完成这个用户的列表,那我们要查询所有的一个用户do user等于user模型使用all方法达到所有的一用户。好。接下来返回这个用户。看一下啊,测试一下。再看一个啊。API test。API啊。看一下有没有返回。啊,没有talking对吧,所以我们需要登录去获取一个talking。在这之前呢,我们先做一些调整,就是你发现我们请求的这个地址对不对,它和前台我们做不好区分,我们不知道是后台的还是前台的,所以我们需要加一个啊,这个就是类似于我们写登录的时候,我们登录是加了一个also的前缀,对吧,那我们的后台的我们加1ADMIN一个前缀啊,那既然这里你要加A前缀。
08:15
啊,这里肯定是找不着的。所以我们的路由也要变啊,路由我们需要加一个分组啊,Dota API。Rope。好。哎,这个就放到这里面。然后把API传入进来,这里面呢,写我们的前缀。啊,这样的话,里面的所有的路由呢,我们在请求的时候呢,都要加上这个in的前缀才可以。试一下。啊,现在地址请求的,但是是没有talking,我们来找一下我们的登录啊。
09:00
这个啊。让你发现事情。啊,有时候我们会经常用到这个登录,还有这个啊注册。是吧?啊,那我们怎么办呢?我们把登录和注册啊保存起来。登录啊,保存起来存到哪里呢?存到我们的这个postman里面,这里有一个save。看见了吧,我们来进行保存,保存的时候呢,啊,这里是我们保存的一个名字。啊。你可以去改,也可以不改,不改的话直接就以这个啊,这个命名也可以啊那。描述,接下来创建一个这个集合就是分组,我们以我们的项目的命名啊,创建一个分组,然后使用这个分组。这个时候保存,保存之后呢,它会在这里出现刚才我们保存的这个地址,这样以后我们每次请求的时候直接去点击啊就可以了。就给我们新打开一个,而且给大家看一下。
10:02
新打开,而且我们的这个参数也都给我们附加着呢,所以是啊,非常的省事,同样的我们把注册也去存一个标签。这些参数就。啊,不要了啊,这些参数我们。应该是放到包里面去查询啊,放在包里面去查询啊,其实放这也行,因为我们测试的话,我们不管get的这个query传参还是这个包里面的这个传参,我们拉都可以接收到对不对,而我们在真正使用的时候,会根据呃使用端,比如说阿贾克斯他传的方式它自己会啊,决定他这个数据要放到query里面还是包在里面啊,但是我们这里测试的话也写的严谨一些啊,放到这里面。嗯,有一个。注册有个name对吧。然后注册还有一个email。Password。
11:06
我们的确认密码啊,那这些参数我们就不要了啊,这些参数就都删掉啊。好,把这些都删掉。行啊。那我们把这个注册也保存一下C5。还是存到这个组里面啊。啊,现在。啊,我们把不相干的就先关掉。只留下我们这个用户的这个列表。接下来啊,进行登录,生成一个talking。包对里面啊,你放到这里面也行,放到这里面也行啊,这个我们包的三单的时候,他俩。啊,就是form data,它就是类似于我们之前在使用表单的时候,进行上传文件的时候啊,那个form data multi part那个属性啊,Multi part form data那个属性。
12:06
啊,这个就是普通的这个表单,我们的附表的那个提交的一个,呃,方式。来发送。得到这个talking。保存一下。放到哪呢?放到我们放到这个认证里面吧,放到认证里面,不用每个需要啊,登录页面都去再填一遍了。你看这是我们上次填的,是不是这个套肯定是过期了。所以把这个给换掉。好,这个就拿到。返回给我们的数据对吧,一共三条用户。但是我们一般不这么去,嗯做啊,我们的这个列表页,它一般会伴随着一些搜索是不是。而且会进行一些分页。对吧,而且返回的数据格式呢。啊,并不是说啊,直接这样把所有的这个字段都给返回了,有时候有一个表里面有十几20个字段,而我们这个列表里面仅仅需要五六个字段。
13:07
是不是?啊,所以我们要干什么呢?要这个去给他建一个transform,然后配合。啊,这个订购API的这个响应生成器去返回数据。但是我们想要使用。订购API的响应生成器啊,要继承他的这个。定位片的。Helper。所以我们。把这个订购API的help写到了这个base ctrl里是吧。啊,那。我们的用户cler也要继承啊贝cler。就可以了。啊。接下来就可以使用this,啊,Response,这是宾格提供的响应生成器,然后使用它的呃,响应集合的方式。
14:00
把我们的用户传进来,对吧,他第二个参数需要一个。Transform,我们现在还没有没有transform,你直接使用这个方法啊,你看一下啊。啊,他会去,呃,找这个transform找不着啊,所以我们去创建一个user transform。啊,应该之前我们学定位片的时候,应该是创建了的,对吧。你家有ID?哎,邮箱证明,所以可以直接使用这个。有伞。Transform。接下来再看一看数据格式。就正确了是吧,给我们包裹到了data里面,然后用我们的这个数据。嗯,但是这个数据有点少,我们做后台列表的话,有时候还要看到它的注册时间和啊更新的一个时间。啊,甚至它的一个是否禁用的一个状态,当然我们还没有这个禁用的一个字段,等我们写到这个功能的时候去加一下啊。啊,所以这里把时间给加上啊。
15:22
这样再来看一下啊。好,就给我们把这个字段给返回来了啊。因为有一些数据是我们之前手动加的,所以没有这个更新时间啊。啊,接下来处理什么呢?处理我们的分页。分页比较简单,分页只要把这个方法我们换成分页的方法就可以了。对不对,比如我们每页显示一个啊,每页显示两个,我们有三条数据,应该可以显示两页,对吧,这个返回的时候呢,也使用啊对应的这个分热的这个方法。大家看一看。是不是有data显示两条啊,这是分页相关的一些信息啊,分页就完成了,那接下来做什么呢?我们处理一下搜索,搜索的话。
16:07
呃,这里肯定需要一个request来接受我们的搜索条件。Request。啊。搜索呢,并不是说用户一定就会传这个搜索条件啊,所以我们会先获取到这个搜索件,然后进行判断,如果你传到这个搜索条件,我就进行搜索,如果没有传就不搜索,对吧?我们搜索现在暂定为用两部分,一个是基于啊内幕的,就说昵称的一个模糊搜索和基于邮箱的一个。啊,完整的一个搜索,那我们先获取到这两个参数啊。搜索啊,一般我们使用啊,Query参参对吧,Get请求嘛,Query参参,所以这种快query方式获取到啊,传的一个参数内啊,当然如果你啊不想这么去来回区分这个query啊,还是什么post传get get存插,你就直接用input input是可以获取get和post都可以获取它。
17:01
接下来再来啊,获取一下邮件。哎,通过邮件搜索。那这里查询条件,我们就要判断一下了啊。要加什么呢?加个问,哎。当内幕存在的时候。就是当搜索条件内部存在的时候干什么呢,我进行这个。Name的一个搜索,这个query是我们的查询构造器。好。Query。Where?啊,Name like用模糊搜索啊,双引号两个百分号,因为双引号的话,这里面会直接写变量name啊,但是他们标红了说明什么?说明我们这个B包函数里面,你不能直接用外外面的变量,对吧,我可以使用右传过来啊。Use啊,当成name就可以了啊,当然啊,因为这个文档这个方法呢,它做了一些特殊的处理,所以你可以直接给第二个参数传这个name也可以知道吧,好,为了这个避免你去混淆,我们统一在壁包里面需要用到外部变量的时候都使用柚子啊,因为有的方法。
18:16
啊,有的笔玩的并不支持类似于win这种的,你就是说传第二个参数,这样你用能用什么用混啊,我们统一一下啊,都使用使用柚子去传入web的这个变量。好,接着去写。啊,我。当这个邮箱存在的时候,我要进行邮箱的一个搜索吧,Function do。Query啊,采用构造气还是柚子?外部的这个邮箱变量,然后里面写我们的查询条件啊query。Where?Email email我们就完全匹配,完全匹配的话,这里直接把这个值放上啊,就是邮箱必须等于我搜索的这个邮箱啊,连上连上我们的分页。好就可以了。
19:01
清楚吗?那现在我们先什么都不传啊,就什么什么搜索链都不传,先看一下我们这个分页都是正常的是不是。啊,那我们要怎么去使用这个分页呢?分页啊,只需要在这个我们的query里面传参,传一个配置参数,然后这个根上你要拿的第几页的数据比我要第二页的数据,我查个二。是不是就给我拿到第二页的数据了。啊,这就分页,所以我们要把这个参数在写这个API文档的时候一定要写清楚。啊,你可以传一个配置,就是你要获取第几页这个数据。就什么,一旦你使用了这个分页的方法的时候,你要在你的这个项目文档啊,就是API文档里面写详细一点,你的这个需要的一个参数,分页的一个参数。好,分页先说到这里啊呃,那接下来我们测下搜索。啊,测下搜索。搜索怎么测呢?啊,因为我们这个是get请求嘛,所以直接在这个current里面,就是parents里面,我们传我们的参数就可以了,比如我们搜索这个name啊,Name包含A的。
20:06
啊,你看它会自动给我们附加到这个链接的后面,以问号的形式去参餐啊,快餐餐搜索一下。包含A的是不是只有这个,你看name包含那个是不是它。那我们再来一个邮箱呢?邮箱搜索c at com,看看有没有这个邮箱。啊,没有啊,C c.com是吧,打错了是吧。c.com,这样应该就能搜到。哎,找到人是吧,这样我们搜索就完成了,如果两个条件同时连上呢,就会,呃,这个搜索条件连上,这个搜索条件当然没有存在这个,即使内部是A的email是他的是吧?A的email是a.com。A at a.com。好。这样的话,我们的用户的列表,然后包含这个搜索以及分页就完成了。
我来说两句