00:00
这个。之前我们一直在说怎么来处理这个请求,比如获取请求行里边的,请求桶里边的,哎,这个请求题里边的,哎包括呢,我们获取请求参数,其实我们这个最重要的就是我们获取这个请求参数啊,也就是前端发过来请求的,你得知道怎么能拿到那个有用的数据,哎,相当于这个投啊这个呃请求这个请求图里边那信息,如果你你有自己的需要,你这个知道怎么来获取就可以了,那怎么来给现在都是请求呢,怎么给客户端就给我们现在的浏览器给他响应呢?哎,我们来看一下啊。前面我们就是说如何处理这个,呃,处理这个使用这个处理中的这个我们这个HTTP.request这个指针类型的一个R啊,来这个处理用户的请求,诶下面呢,我们就来说怎么来用这个我们那个处理器,哎,函数里边第一个参数HTTP.response writer来给用户响应,来给用户响应这块呢,我们来看一下这个response writer这个接口啊。这里边呢,它也有一个header,因为我们都知道在响应豹纹这块呢,也有响应,这个好响应头和响应体对吧?所这块啊也有一个头啊,也有一个头,然后里边呢,还有这个right right header,还有一个right方法,Right head这块传的是个int类型的一个值啊int类型值那这块是要干啥的呢?比如呢,你你想比如设置这个什么状态码啊啊等等啊这里边这三个方法啊都都会这个用到好我们继续往下看啊,下边呢是这块。
01:24
也这个解释呢,就这一句啊,Response RA接口呢,被什么HTP处理器用于构建HTTP的一个回复,说白了就是一个响应,下边这一个给大家举了一个例子,如果要给客户端响应一个字符串,那就非常简单了,直接用write就可以了,用这个W调一个write方法里边,因为它这里边传的是一个字节,呃字节类型的一个切片啊,所以呢,你就可以直接整一个呃,这个字符串就直接放进去就可以了啊,直接就呃放到这个BA这个里边就可以了,就直接这样,就把这个您您的请求我已经收到,这句话就是这个字符串,当然其他的都可以啊,就能在浏览器上看到了,其实很简单的一个响应,就是你发过来请求之后,就能获取到什么用户名,密码,获取完之后呢,你直接给他想应一句话,你说哎,你的用户名密码对了或者什么的啊,可以啊,就这样直接给他想应一句话,哎,浏览器中的结果就是这样,哎您的星求我已经收到了,就是这种啊。
02:17
那我们也可以干什么呢?也可以想应,比如想应一个页面也是可以的啊,也是可以的,那如果要你要想应它呢,响应报文里边的内容就是这个样子,HTB什么一点一二百,OK,这就是我们喜欢看到的状态码啊,哎,这个成功的一个状态码,而且下边呢,最主要是看它count time。哎,插载的UTL伽嘛,就是这个字符集啊,Ul伽嘛,还有这个内容的类型,这个count ta是内容的类型,你到底想要的什么,是一个HTML还是什么阶层格式啊等等,哎,为什么把这个标出了呢?下面我们可以额外的来处理一下诶告诉他这个内容类型是什么,或者他也能自动的帮我们识别你比如如果你要想要的是HTMM页面,那这块它就变成一个text的HTML了,咱们自动的识别啊,下面就举出来了给客户端响应的HTML页面了,比如呢,我自己写了一个HTML,诶这自己写一个字符串啊,HTML一个相当于一个页面,你在里边把这个跟标签head呀,Body都写完,诶写了之后呢,以这把它同样用write的方式给它写过去,想象到这个浏览器,那想象到浏览器之后呢,页面里边的内容肯定还是这样啊,播的里边的内容我是以网页的形式想象过来的,填过来的,这是浏览器中的结果,你虽然写了这么多东西,但是大部分是不是都是这个标签啊,诶都都是标签,然后最终最主要的还是这个body body是会在浏览器里边显啊,这个显示出来的。
03:36
所以呢,你把它写过去之后啊,用write方法写过去,那前面这个什么写一个字符串,写一个页面啊,我就不给你演示了啊,自己看下子可以演示一下,这很简单啊,直接就调这样的一个方法,你写一个字符串,诶这个直接传过去,传到这个BA数组里边就可以了啊,传到这个write方法里边,整个BY数组转换一下就可以了,下边这个浏览器中的结果就是显示它,但是呢,我们最主要的是看一下这个报文里边的信息啊,通过在浏览之中右键的查看网页源代码,发现它确实一个A页面,也就说你如果要这种以这种方式想要过去的话,你右键查看源代码就跟上面这种方式是不一样的,上面你直接写了是一个你的请求我已经收到,那直接是一个它那就显示这句话,右键查看源代码里边是没有HTM的标签的,但是呢,你如果要想要的是一个HTM页面,诶这种方式显应过去,你右键查看源代码呢,它是有这个,诶HTM跟标签hi body璃都是有的啊,都是有的,只是呢,其他都不显示,只是显示body里边的内容,那这个时候呢,来看我们这个豹纹,显现豹纹里边内容,这时候你看这个content type前面的都一样。
04:36
是不是变成text HTML了也他也能啊,他能知道啊,能自动检测出来,你到底给我想应过来的是一个什么HTML啊,还是一个这个,呃,这个字符串啊,是个文本呢,还是一个呃,杰森下边就说了,给这个客户端想要杰森格式了,那这个杰森格式我们开发时候还是用的比较多的啊,尤其是比如前端发个异步请求啊,然后我们后边来想一个杰森一个数据,所以这个杰森啊用的还是比较多的啊,就是A那块啊,哎,这个时候呢,看这个处理器端一个代码,那这个呢,我们自己创建了一个UR,哎,我们想把这个对象,比如转换成一个杰森格式,那需要呢调一下这个,那如果要要这个设置杰森啊这块你就得设置这个想象头里边这个内容的类型了,诶就是得这个调这个了啊调这个呃w.head点调一下set方法,我们这个讲请求的时候也带大家看这个head了,哎,Head里边有这个set方法啊,Had那个结构体里边有个set方法,就是设置的意思啊,设的意思,我们这个当时也说了,他想用的这块呢,我们可以设置什么内容的类型,那这块就调了下这个。
05:36
方法w.header哎,这个类型呢是呃,这个head,哎,那那个head那个类型啊,里边有个set方法,调下set方法,设置一下那个content time,你告诉他就说你你这个传的是一个什么类型,比如all什么杰森,然后你这个创建一个结构user,把它转换成一个Jason格式。这是不是JA算里边的一个方法呀,马手对吧?哎把它传进去,诶传进之后呢,就能转换成一个接S格式,然后把它这个显象过去就可以了啊下过去就可以了,诶将U呢转换接S格式,哎最终呢,我们在这个浏览器段就会看到这种接层格式的一种,哎,打括号,然后ID是什么,U的内是什么,哎,这种方式啊,那同时呢,我们在这个想象报文里边会看到这种方式,哎,Content type application斜杠杰森,这就是你这个哎设置的这种格式了啊份格式了。
06:22
也就是说你这个想应这个字符串的时候,还有响要这个HTL页面的时候,这个东西呢,你你不需要自己指定,哎,不需要自己定,但是呢,想要这个接层的时候呢,你需要诶告诉他啊,我现在需要这个响应一个JA格式,就通过响应图的形式告诉他,就在响应图上面有一个content type啊就设置一下告诉他就可以了,前面这个啊想象字符串啊,还有这个想象这个诶T吧页面啊,哎,我就不演示了啊在这那我们演示一下这个杰森吧。演示下这个杰森嘛,就设置一下这个响像头,调下这个方法w.header我们可以先看一下这个啊,我们打开这个找到我们这个net http这个包。
07:02
在哪呢?点开它找到我们的这个。Writer哎,点开它这里边呢,有个header类型就是header header这里边呢有get方法,有set方法,Set方法这块呢,有个set,我们刚刚就调了它啊,添加这个建职,对,哎,到这个head就到这个墙头里边啊,或者这个请头头啊,如果这个键已经存在的,会用一个什么新址,这个新址一个要素切边来取代旧址,就说白了就是如果在的话,就相当于把那个替换了啊,把它替换了好,那下面啊,我们就来测一下它啊,这样吧,我们一直用上面这个。我们再来写一个处理器。叫一个什么呢?Test一个杰森。Response,好,又写了一个处理器WHTTP点了一个response。好,来一个这个。
08:00
R。HTTP,点一个request。好。那这这我我来写一个映射。是一个接好。方法处理器函数改一下,看一个结算。Is,好。然后在这里边儿呢,我们来这个设置有设置什么响应。想要内容的类型?A类型好用W点一个什么呀,Head对吧,哎,然后点。That。还的是一个。Hide是一个啥呀?Head啊,Head类型啊,Head类型啊,没问题啊head。开,然后呢,点一个。
09:00
Set set括号里边content。啊。内容类型,内容的类型。然后后边这个值a play。斜杠杰森,杰森来告诉他啊,我要想应一个Jason格式了,那我想应Jason格式呢,这时候呢,我需要有一个这个结构,比如那我们窗帘user,我们这里边有user吗?没有是吧。没有,我们来找一个。在这儿我们来复制一个啊。Model。C。CV。好,Model豆来引一下。User。Model。
10:01
点一个U的。引进来了没好啊没问题摸有点有段,然后里边呢,我们这个ID。整一个一随便写啊,嗯,Username。一个,嗯,耳蜜。Password。连一个123456。好,最后一个email email。这一个me at at,硅谷点com。好诶逗号,这这个最后也需要有逗号,好CTRL是不K。好,有了U之后呢?下面我们来将这个U的转换为杰森格式。怎么来转呢,杰森?逗号下划线等于。接着点一个。
11:02
Mar Mar手怎么拼呢?妈。M。A2。Ma啊,因为这个没提示,确实不爽啊。有的这样是吧。保存。对吧。Marshal。L。嗯,好啊,诶,User的user的传进去,好,下面呢,我们来将这个杰森格式的一个数据。诶,响应给客户端。
12:00
好,哎,来这个W点一个。Rar。节省。好,嗯,这个。这块就这吧,啊嗯,不管它了啊,不管它了,有这个绿线就有绿线吧,好这个写完了,哎,写完之后呢,我们来这个测试一下。终端打开。勾丢的。慢点,够。Exe。好,哎,来我们这个时候呢,需要test一个杰森,发个请求test杰森。的。8080。斜杠。它是一个节省。好哎,这个时候啊,这个JA层格式的一个数据呢,就给我们想应过来了,诶大括号ID MU name,然后min password 123456 email标准的一个JA层格式啊同时呢,我们来F12。
13:04
F12,我们来看一下啊,看一下这个报文信息。刷新一下,诶点开它,哎往往上翻,哎来看一下在我们的response,诶响应图这块这块是不是有一个content type。对吧,诶这个呢,就是我们指定的啊指定的哎,除了这样啊,我们这个状态码呢,也可以我们指定啊,也可以指定,比如呢,我这个如果想让这个浏览器给我重定向也可以,比如我们最后这块啊,那就是最后这块实现这个重定向了。来看这块啊,让客户端重定向处理这个端代码,注意啊,这块这个w.hi.s这个呃,还有下边这个啊这个呃,Right head啊这个方法这个下边这个操作呢,必须在这个right这个呃之前,也就是你这个设置这个location,就设置这个让它重电下的这个地址的时候,必须得在red head这个之前。哎,这两个顺序啊,不能颠倒了啊,不能颠倒了,比如说你想让他这个进行这个重定向了,你得告诉他在想象图上面,得告诉他一个location,给他设置一下这个location,也就跟我们刚刚设置那个content type一样,但是注意这个不能放到它下边,就设置这个right,因为right right head1定要这个在它下边,你不能在它上边啊,写完之后呢,你就不能再设置了,就是red head之后你就不能再设置了,所以这两个的顺序一定要注意啊,其他的倒没啥,就是这个顺序,你这个设置完之后呢,在下边这个显像头报文,哎,这个显像头这个报文里边就有个location,那这个时候它就乖乖的向你设置的一个地址来发请求了,因为我们现在联网,我们就可以设置一下它啊,可以设置一下它好,那下面啊,我们就来试一下这块没有其他的啊,就是设置哎,设置一个location,设置一个状态码就行了,只是它两个的顺序要注意,你不能这个颠倒了啊,不能颠倒了,就这用的这是一个什么。
14:49
这个HTPS少了。啊啊这个啊这个啊,知道一会我们写对就行啊,一会我们写对就可以了啊好,那下面我们就来测一下这个重定向啊重定向。
15:00
再来,我们再来这样吧,我们再来写一个处理器啊,直接复制一个了,为了简单啊,Test一个direct。重定向好测试重定向那这块呢,呃,W设置这个显像头,就是设置显像头里边这个location。Location属性就是你让它重定向,你得告诉他一个地址,这个location后边就是那个地址来,呃,把这个呢,Content type改成location ctrl c。把它改成location。然后呢,我们比如想让他去哪。HTTP。冒号斜杠斜杠S了改是吧,哎,百度的啊,3W点有百度,当然你访问其他的也行啊,百度点一个。加一个com,诶接触呢,就能自动的去这个访问百度了,下边这些东西都不要了。
16:03
没有了,好,那设置完它之后得注意。这是这个设置假象头里边信息了,它一定要在下边这个,诶之前啊,下边是设置这个状态码。这咋了?诶,怎么总是多一个引号呢?来啊,设置这个响应的一个状态码。状态。状态码。来W点一个什么呢?Writer he这里边是不是传一个in类型的值,诶,我们看这个结构的时候啊,是不是传一个类型的值啊,对吧,转打开的就是告诉他一个状态码的啊哎,重定向的状态码是什么呀。对,302,哎,302302,哎,这个状态码302,当然啊,你也可以设置一个404,比如你404,我们是不是资源会找到啊,比如你发个请求,设置那个404,然后给他一个楼,OK,去一个错误页面可以吧,他就去那个错误页面了,这也是可以的啊,也是可以的啊,也是可以的,我现在就设置这个302,让他重定向一下,让他再去访问一下百度,好,那现在呢,我们再再来一个一设一个请求的地址啊,比如test redirect。
17:15
哎,测试这个重定向好来CTRLC。买点够。哎,慢点一个exe。好,诶,来复制一下这个test redirect,我要发这个请求了。来。回来,不能回来了。在这来。删掉。CTRLV,然后呢F12,我先把这个给调出来,我鉴定一下第一个行为回车。点开它来看一下啊,我们这个。你怎么没有啊?
18:00
写错了。设置location,然后呢,At。因为该放学了是吧,我这个想着你们赶快吃饭呢是吧,这个忘改了,哎。是不是调的这个处理器调错了呀,对吧?哎,应该调这个啊,应该调这个,这个忘改了啊,那这个又得。Go build,慢点,Go。好了,哎,再来一次啊,再来一次,嗯,把这个清一下,我们来刷新。诶,你看诶是不是把百度打开了,哎,来啊,我们看我们的第一个请求啊,下边的就不管了,下边是不是请求了百度啊,诶302啊,第一个的状态码是302,第二个状态法是不是200了,请求百度成功,因为联网了请求成功啊点开它,我们来看在这个response响应头这块是不是有一个location,就是我们后边设置这个地址对吧,就是设置这个地址啊呃,同时呢,呃这个呃,他第二个请求也发送了,诶请求了百度,所以呢,我们就把百度这个打开了啊,这是这块啊这个设置响应设置响应,不过我们正常的来说啊,给这个客户端响应呢,我们会用到这个。
19:18
Go给我们提供的这个模板引擎,然后给他提供模板,直接给这个,呃前台,比如去哪个页面,在哪个页面上显示哪些数据。要用那些啊,正常来说,我们是通过那个来给这个用户进行响应,好这个,那这个我们下午来说啊,那今天上午呢,我们就讲到这儿,好,这个放心吧。
我来说两句