00:00
这可学习一下响应。所有的路由和控制器啊,我们在处理完这个业务逻辑之后,都要发送一个啊响应给请求啊,用来响应这个浏览器的一个请求。提供了多种不同的方式来返回响应,最基本的响应就是从路由啊或控制器返回一个字符串。啊,响应呢,我一般使用这个return关键字,接下来我们看一下最基本的一个响应。还使用test啊,这个测试路由。CTRL加左键点到台词的里面,把之前学习的内容。先删掉。响应字符串。啊响响应的话,我们使用retain关键字,如果想用字符串直接返回这个字段就可以。
01:01
下面我们请求这个test看一下。是吧,这是响应了一个字符串。啊,还可以响应数组,直接返回这个数组就可以,但是它会将这个数组给转化成一个杰森的一个响应。看到了吧,它返回的是一个数组,那为什么返回这个数组的一个字符串呢?是因为啊,这不是标准的一个阶层的数据格式,嗯,标准的一个数据的,可是的话是有键和值的,比如我们一个。这样键值的一个数组。
02:06
这个时候我们再看看它会不会我们转成阶层响应。可以看到这是一个杰森啊,如果想要让这个杰森格式化的话,我们可以在POS慢里面进行请求,来,在这里请求get。我们的test。这样就可以显示格式化后的一个格式。那通常我们并不只是直接就是简单的返回字符串和数轴,大多数情况下我们都会返回一个完整的啊这个response的一个响应的一个实例。返回这个完整的response实例呢?它允许我们定义这个响应的状态码,包括响应的图信息。啊好,那如何响应这个response的啊,这个完整的一个响应的,只要这个response啊,这个辅助函数就可以了,它会就说继承的实际上是这个。
03:04
啊,Response的一个类。来试一下啊。啊,还是这么去试,不用去定这个路由,我们在T路由里面去测试。我们把这个只需要注释掉就可以了。啊,我们现在啊,响应了一个字符串,并且设置了啊2.0的一个状态码,然后还设置一个图信息接收的这个啊。接下来看一下啊。用这个测也行。是不是一个字符串,包括我们响应的图信息,可以看到有。这个啊。啊,当然我们还可以自己去自定义投影器,下面我们比如我们填一个不存在的一个投影器看一下。
04:06
啊,我们自己添加一个。还是用破损半径测试?可以看到还变成了九个,我们想要的这个内容肯定还是在的,还得变成九个,多了一个我们自己自己设置的一个图形,对吧,在浏览器中也是可以看到的,在浏览器中啊,你正常的刷新它显示字方,但是浏览器的话,你要打开我们的检查,然后在work里面再刷新一下,找到我们的这次请求,从这里面去看,从response head里面去找,还有我们想应的一个头信息。啊,这个request还是我们请求的图信息。啊,接下来就说到了这个添加响应头,刚才我们使用这个方法也添加了一个啊,自定义的一个响应头啊,还可以使用这个with head是呃去添加,就是在数组里面写一个一个响头,和我们这种方式是一样的,你用哪种都可以,这种我们适应。
05:02
就是写过例子了,我们写一下这个例子啊。嗯。写完整了吧。啊,这里我们随便写一些内容,比如说呃,添加小人头。看一看有没有我们家这些小像头?嗯,应该是没有type这个变量的啊。我们还换成这个文字。用这个测试吧,这个测试比较方便。看我们的文字啊,上面没有注释,把这个注释掉。就没有注释的话,他在这里掉的话,他下面代码就就不走了吗?这边已经给出了响应吗。
06:04
好,我们的文本内容至上,有了,接着看我们投影仪有十个头是不是?好,我们加的这些头你看都是在的,Had will had will对吧。第一个图形张图形写。啊,包括我们家的这个也是在的这个自定义小镜头啊,多用于什么呢?就是啊在处理啊跨域资源的时候是比较用的,因为我们可以通过这个响应图的一个设置,就是说允许进行跨域的话,这样再进行阿贾斯啊进行跨域请求的时候。那就不会存在一个跨越的问题啊。处理。跨域资源访问时候比较常用。那这个先注释掉。啊,这两这个是啊,写到数组里面,这个是一个一个添加,用哪种方式都可以啊。
07:00
嗯,有时候呢啊,我们要设置这个缓存的一个时间啊,就是设计它的这个啊开启的一个时间,它有一个中间键,可以快速的进行这个catch启control的一个设置。这个我们到学中间的时候再说。添加cookie到响应。我们不仅可以给响应啊,添加这个头,还可以添加这个库位,先看一下现有的,现有的只有两个库位对不对,一个叉SF的一个talking,还有一个是love的一个session ID啊,Session的一个cookie,那我们可以自己去定义这个cookie。Cookie的这个,呃,参数呢,完整的有这么多,但是我们常用的一般就这三个啊,键值还有过期时间就够了啊。这里还随便写啊,添加cookie。
08:00
嗯,这个类型的话。头信息我们就呃写上吧,写上这个也行啊。那这个cookie,这是我们cookie的name cookie的value。啊,这是cookie的一个过期实验,我们写个一啊。看一下,用这个测一下。接着请求。可以看到cookie变成了三,有一个是我们自己自己添加的那个找找啊,应该在最后面。是不是做了一个内,然后还有一个V对不对。但是你可能会有疑问啊,那我的这个video。啊,就写了这么这么一点,那为什么到这里这么长呢?这是因为呃,Lover在返回你这个cookie之前,会对cookie的这个Y流进行一个加密,知道吧,然后在你请求我们项目的时候拉,就说如果你带着这个库费,它会自行自动的给这个库进行一个解密,关于加密和解密的这个配置呢。
09:00
啊,我们可以,呃,在这个。APP啊,APP mid VR里面这个加密的这个cookie,加密的这个中间件里面去设置啊,设置你不需要加密的一个K,就是我们的这个里面。啊,根据你的需要去啊进行设置吧,啊,这里我们就不进行设置了这个文件。就是你配置在这个里面的一个属性,它是不会进行给你加密的。接下来看一下重定向,重定向的响应啊,是direct response的一个类的一个实例。并且包含了用户需要重定向至另一个URL所需要的一些头信息。我们这里提供了几种方法,用于生成radioac的一个实例,最简单的就是使用AC全局辅助函数。直接这么去使用。之前在学root的时候,路由的时候也学过,就是啊,重定向的一个路由啊,我们这个不要搞混了,这个是重定向的一个响应啊,这个是响应。
10:14
重定向响应呢,也是比较实用的啊,比如我们在啊,用户访问我们一个活动页面的时候,我们判断这个用户没有注册对吧,我们就给他重定向到这个注册的一个页面是不是。比如我们给它重叠一下我们的首页都可以啊,这里是。啊。就是我们的uri,我们root里面配置的这些uri啊,比如重立性的Y科目都是可以的。哎,当请求我们的test就重新向的这个welcome。看一看。是不给我们充电销了,你看。这是一个302的一个状态码,这是给我们冲凉后的一个结果。
11:01
接着看。嗯。就是有时候我们希望啊重定向到用户,就是说上一个页面之前返回的一个位置,比如说我们提交表单,表单没有效果,或者这个有些字段不符合我们的预期的时候,我们可以使用这个back来进行呃返回,让这个用户的请求返回到他前一个呃这个位置。由于back它使用的这个session,所以说一定要确保我们使用back的地方是在这个呃,外部中间键啊,这个里面,或者是呃。所有的这个塞的中间键啊,一定要确保。我们back是什么位置啊。啊,当然在我们这个文件里面,web.PP里面,这里面的路由是可以使用这个back的,这个路由里面我们是包含了这个。啊,腮线的啊。位置也可以给大家看一看,你看我们注册路由是不是在这个APP。
12:01
APP里的这个provider里面有一个root service,这里是不是注册的这个web.PP的路由是吧,它使用了这个web点中间键啊,Web的中间件,Web中间件看一看。APP看到里面我们看看外部的中间键是吧,它里面是不是使用了这个塞线,所以在这里面我是可以使用这个back啊。我这都关了。再看一下啊。嗯。With input啊,这样可以把这个用户之前输入的一个一些信息,就是临时的放到了筛选中,我们在页面中就可以。啊,就是说从三星里面去取出来用户的一个收入。这样体验比较好,不会导致用户比如说提交错了一个字段,你把他的所有的这个字段都给弄没了,对吧。嗯。接着看啊,这个我们在做实例的时候会去使用这个back。
13:05
啊,当然在重定向的时候呢,我们不仅可以使用啊,这种入react直接重定向的一个U还可以使用啊,命名路由,重定向的命名路由。就是使用这个的辅助函数里面的root方法,然后加上我们的命名路由的一个名字就可以了,如果要携带参数的话,带上那个参数就可以啊,那我们就试一下这个带参数的啊。这个我就直接注释掉啊。Back可以重新到上一个。啊,上一个请求。还有就是。
14:00
啊,这个重定向到路由啊,命名路由。当然我们这里不使用这样,使用我们的blog点秀,我们blog秀查看一个博客的详情,它是需要这个一个blog啊,作为这个路由参数的,当然我们可以通过这里去看一看啊。比如pup artisan。Root list grp筛选,筛选什么呢?点。看看这个命名的一个路由。这里是我们的路由的名字,这里是我们要请求的路由的一个地址,它是不是有个blog的一个参数,对吧,对于这种。呃,命名路由,并且需要参数呢,我们再加一个数组就可以了,测试一下来。Test。是不是给我们重叠上到这里了对吧,我明明请求的是test的啊。
15:01
接着来看。啊,这里等我们学模型的时候再说。如果想重定向它其他的一个外部的域名。可以使用这个away。就是重定向到其他的一个域名。比如这里是崇名校的谷歌。你把它改成百度。这就重启好了,百度。这是重庆上的外部域名。
16:00
嗯。接下来就是一个用的比较多的一个地方,就是在我们重庆向的时候呢,可以使用这个位子。啊,这个方法去啊,同时携带一些数据,它呢这个数据呢,会闪存到这个三线中,这时候我们在呃重镜像的那个页面,比如说一个表单体的页面,我们就可以使用我们三线里面存到这些数据。使用为的方法进行,就是在页面中啊,我们就可以使用。这样一个数据。啊,从从三线里面取出来,我们这里在重定向的时候闪出的这个数据。啊,这个先不做演示,等我们写例子的时候就会用到,实战的时候就会用到。嗯,这里不要了,就这一个。
17:00
好,把这改成我们的博客添加页面。重定向到博客的添加页,然后带来这个。数据,并且放到了三星中。看一下啊。这关了。Block test里面的test,它会给我们处理样的添加,对不对,并且给我们啊带了这个。对吧,带着这个,那怎么使用呢?看手册。在页面中我类的模板中我们可以使用啊,从三里面取出来就是给我们闪出的这个数据可以了,找到博客添加的页面,Resource will。C。那随便。我们在。最上面来写吧,好吧,就给大家看一下。好。
18:00
你现在刷新是没有的,你要从立项过来的时候他才有。Test。是不是携带一个数据啊,你再刷新就没有了,知道吧,就是它这个闪存啊,它是呃一次性的,就是它只闪存一次,就当你重新向到这个页面的时候,它三新里面是闪存的这个数据,对吧?所以我们这里可以拿到,但在刷新页面就没有了,说明什么,它是只闪存一次啊。这个一定要注意,不要你不要测试的时候一直在这个页面刷新啊,我的这个消息怎么出不来。知道吧,你要你要从这边去重定向的时候,它是能带这个消息过来的,但是你要刷新页面,它没它只闪存一次的闪存,你要明白这个存储和闪存的一个概念。注释一下啊。嗯,这个我就删掉了,就是不去啊,给我们原有的页面去做一个。捣乱啊,所以你下下注释啊。
19:01
只存一次。啊,再次刷新页面就没了,这一定要记住啊。好,还有其他类型的一个响应视图响应,视图响应的话,我们用的是比较多的了,要一个页面嘛。啊,当然它是呃,就是说在返回页面的时候呢,还啊同时给加了一些头信息啊,我们之前只是呃响应了一个页面,而且我们使用方式还不一样,我们看看为什么不一样视图响应,这里的这个视图响应呢,是使用的这个啊response的V方法去进行响应的啊。而我们的这个。啊,之前一直使用的呢,是。啊,比如我们随便打开一个控制器看看,我们之前想用页面的方式是使用的。View的全局辅助函数。
20:02
那么我们都使用这种V的一个全局辅助函数来反映的这个视图。啊,想到一个视图。啊,这也是一种方式,但这个我们写的会比较比较多一些啊,所以大部分情况下我们还是直接使用这个辅助函数。还有就是杰森响应啊,杰森响应之前大家可能啊,就是就会有疑问,哎,这里已经不是能响应杰森,为什么还要还要用这种专门的杰森响应呢?因为我们之前的这种你直接返回字符串,或者直接返回这个数组的话,它。并就说并不完整啊,不是一个完整的响应,就是基于我们这个response对象啊,这方对象才是一个完整的响应,它可以去携带一些图信息啊,携带一些我们的cookie啊,啊,所以我们在响应杰森的时候啊,也尽可能的去使用啊,这个response提供的这个方法就是杰森方法去响应。
21:02
这样去想想。那接着测试一下。在这里啊,是不是有我们想要的一个内容内和states,当然你在浏览器中,你get请求也是可以测试啊,只不过这个。啊,不是很好看啊,格式不是很好看。如果要创建杰森P啊,使用这个with call back,还是还是想要那个杰森,只不过多加一个with call back就就可以了啊,Call back其实就是前台传给我们的一个函数的一个名字啊,杰森批的话,他前台会传给我们函数嘛,我们把数据返回给他,他在执行那个函数。一般也是在处理跨域的时候才会用到结神癖啊。那你这里写一下,但是我就不去举例了啊做如果是一个请求就是跨越了嘛,你可以使用那种GP的一个处理方案。
22:06
好,响应的话。还有一个是。嗯,文件下载。文件下载是怎么回事呢?就是有时候我们呃发起一个请求啊,如果是浏览器是可以识别的一个文件,比如说CSSJS或者图片,浏览器会自己打开,对不对,但有时候我们是不想让浏览器给打开摄产箱,让它执行一个下载操作怎么办?这是我们可以返回一个啊,这种下载的一个响应,我们来举个例子啊。举个例子。把这些先注释掉。举个什么例子呢?还是在啊,添加博客的这个页面吧,在这里吧,好吧,我写一个A标签。嗯,比如说下载index.css好。这里。啊,我给上这个half,然后给上我们的这个INDEX3,这个位置是在public下对吧。
23:04
是pub。啊,CS是不是indexs对不对,所以我们用access这个全局辅助函数获取资源啊,它就指向的这个是public目录嘛。啊,来里面的CSS index,点点CSS看一看啊,假如我们想让他下载这个CSS。嗯,是在blog的里面啊页面,我们在这个里面临时添加了一个这个这个。下载,然后点可以看到是吧,直接打开了,这是因为浏览器认识这种格式,所以直接打开了,那有时候我们想让它真正的去执行下载操作,怎么办呢?就可以使用这种啊响应文件下载。这就是我们要说的啊。响应文件下载,可以给他一个。一个response啊,然后用一个download的方法。
24:05
啊,当的方法里面传我们要下载的一个文件的一个URL,一个地址。啊,这里我们用吧。还是获取我们CS下面的index.cs也就是说啊,当你请求我这个test的时候啊,我会给你响应一个这个inend set下载,那这里这个链接我们就不去直接去拿这个资源了,是吧,我们就可以去。啊,请求我们的test啊,这里应用于测试,我就直接写链接了,我就直接写这个链接了,就不用这个命名路由了,我现在没给它取名字是吧。这时候我们点它点这个下载,你再点CS会到哪个路由呢?会有这个test啊,这个路由给接收并且执行test ctrl里面这个方法,那这个方法就返回了一个文件的一个下载。看下效果,刷新一下,改完页面刷新一下再点。
25:02
这里找不到这个文件,我们方法用错了啊。啊,你看一下这里结束的是一个pass啊,就是文件的一个路径。然后还可以接收一个第二个参数,做文件的一个下载名。路径啊,我们这里用的是access access它会返回一个URL,那所以要获取public下面文件的路径怎么办?可以使用public pass啊。嗯,Public pass。这也会返回啊,我们publish下的一个路径。这时候我们再来试。Test直接再次请求,诶可以看到这个文件就下载下来了,而不是直接在浏览器中打印对吧。这就是啊,文件下载,接着看流下载,就有时候我们啊给定的一个字符串呢,我们啊不需要将它写入磁盘,而是直接写成文件的话,可以用这个啊流下载,流下载呢,它这里是一个B包,第一个参数B包啊接收一个呃,输出的一个流。
26:08
啊,第二个是一个文件名啊,这里。来看一看啊。啊,这些都不是特别常用的,但是偶尔会用到。像之前的这些响应是比较常用的啊,像这些文件类的响应就是偶尔会用到。啊,这里我们就不去请求这个API了,这里我直接输出一个东西吧。Hello啊。啊,我本来。啊,这个东西我是直接输出的,但是只是在这个B包里面,它会把这个内容给写入到一个文件啊,我们写成。
27:07
啊。Hello。它会以这个文件名去进行一个下载操作啊,Stream当录的流下载。试下来。再次请求是不是一哈点TT,你如果去看它的内容的话。在文件中显示。答案内容的话就是我们啊艾的这个。当然这里只是拿I hello的举例啊,这里面你可以写很多逻辑代码的,比如是从远程地址请求的一些数据流,是不是,比如是。呃,打开的一个这个其他的一个文件的一个文件流都可以用这种方式,这只是用IQ简单的去举一个例子。好。
28:00
其实呃,常见的响应就这些啊。你像这个费的话,是直接用于用户浏览显示一个图片或PDF,其实你不用这个响应的话,如果是你返回的是一个图片或者PDF浏览器,如果能认识的话,它自己就打开了。用不用都行,但我们常用的就这些响应。响应宏啊,响应宏其实就是说我们可以就是对于响应的话,去制定一些相应的一些格式,这我们再写。啊,其他功能的时候会用到,到时候再说。暂时我们常用的响应就前面这些啊,主要是一个呃,Back和一个重量的一个响应,包括携带的一些数据。
我来说两句