00:01
好来,接下来我们就具体来说一下啊,怎么去获取我们的请求参数,首先呢,我们先给大家讲一个注解,叫做request parama,它是来专门来获取我们的请求参数的啊,具体怎么用的,我们在代码里面给大家去讲解啊,这个word大家可以自己去看啊来吧,我们回到我们的开发工具中,呃,我们首先呢,打开index加T,然后呢,在这个位置呢,我再去发送上一个请求啊,这里面写个比如说啊,测试我们的这个啊,Request para啊OK,注意了啊,我要发送这个参数了啊,比如说我们发送的这个用户名等于Tom吧,并且呢,A只能等于22岁看到了吧,这是我的一个请求啊,来,我们测试的时间,Request这个注解。啊,测试的是它,那么这个请求呢,将来在我们这个后台呢,我们就必须要给他去写出一个。
01:03
这个是C啊,就是它好,我们就必须要给他去写出一个什么来了呢啊,写出一个处理方法来了,好,我们来演示我们的request的啊,这个方法好就是它。好,那么这里面的话,我们把这个请求给它写上啊,怎么这来。啊,把它写到这。然后呢,我们这个客户端的一个请求啊,客户端的这个请求是这个样子的啊,那么接下来我们就来研究啊,现在的话呢,我这种请我这个请求里面呢,是携带了两个这个请求参数的,看到了吧,诶携带了两个请求参数的,好,那么像这个请求参数我们怎么把它获取到呢?对吧,这个top跟这个22我怎么获取到呢。
02:00
怎么获取啊?好,那我们先来分析一下哈,我们在这个web阶段是怎么获取的,大家还记不记得是不是有一个request get per吧?诶,是通过这种方式来获取的啊好,那么其实这是我给大家去讲的第一种方式,除了这种方式呢,它还有一个方法叫做什么呀,叫做get什么。Permeter map我记得是啊,还有这样一个方法,那么这个方法呢,它是把所有的请求参数呢,一下子都获取到,给它封装到一个map里面,能明白吧,OK,那么其实SPA底层呢啊,它也是这么来处理的,我拿到这个map以后呢,我再通过这个反射的形式啊,我就可以怎么着了呢,获取到每一个这个参数,再把它想办法呢,给你什么设置到你这个请求,哎,参数这个方法的这个参数里面,那么这个过程怎么去做呢?大家注意啊,我们需要在这个请求处理方法中呢,去定义上对应的两个行参来去接收你的这个参数。
03:10
听懂了吧,然后呢,我们在行参前面呢,使用一个全新的注解,叫做request,叫parama注解,告诉他把我的请求参数里面的username这个参数好给到我当前的这个形态上面,把请求参数的谁呀,哎,就是age。好,这个参数就是它啊,指的就是它给到我的age这个行参上面,那么这样的话,我们就把这个请求参数给它获取到,那我们来看一下啊,这里面我们来输出一下,好,输出一下我们的用户名,加上一个逗号,我们再加上一个H,然后呢成一个success,看明白了吗?来这样我们就把这个值呢给它获取到了。
04:02
简单吗?简单吧,所以说呢,你就是通过一个注解来做,对吧,破C里面大部分的功能都是通过注解来完成的,那么你只要记住这个注解的用法,OK,来吧,我们先来看一下啊,能不能正确的获取到,好它也部署完了,部署完以后呢,我们就来访问访问啊刷新一下是拍啊点一下哎,成功了,我们看这个后台,你看这个TO22是不是拿到了。看明白了吗?哎,所以说呢,这个request para呢,它就是叫什么?哎,映射我们的请求参数啊,到什么呀,到我们这个请求处理方法的一个行参啊,OK,那么在使用它的时候呢,我们还需要注意这么几个问题啊,第一个呃,如果行参,如果这个请求的参数名与行参名是一致啊,则可以省略request的指令啥意思呢?啊,这个不给你演示了哈,我就来说一下,假如说你这个请求参数名是不是他啊,你的行参名是不是他啊,对不对?哎,如果说这个名字跟这个名字它俩是一样的,就是相同的,那么其实你前面的这个可以把它省略掉了。
05:23
就是request这个东西,你可以把它省略掉了,同样edge跟edge是一样的,它也可以省略掉了。明白什么意思吗?只可以直接省略掉的啊,好,但是大家注意,我还是建议呢,不管你一样不一样,你都把它指定到这,听懂了吗?都把它指定到这儿,理解什么意思了吧?OK,好,那把这个说完以后,我们现在再来给大家去演示另外一个问题,啥问题呢?我们来看哈,现在呢,我去访问的时候,你看我访问传这个Tom传H等于22回车,这是没有任何问题的吧,对不对,但是呢,当我在访问的时候呢,我没有传A这个参数,那我直接回车,它就告诉你一个400的错了,看到没有,说什么呀,说A呢,它是require是不是必须的呀?
06:14
能看明白了吗?所以说呢,这个地方大家应该能猜到这个是什么问题了哈,就是因为因为什么呀,你使用了这个request。啊,这个标注以后啊,标注的这个行餐好行三必须要什么呀?赋值,啥叫做必须要赋值呢?也就是意味着什么,我必须得从什么呀?哎,必须得什么不是呃,这么说吧,啊,这个使用at request p注解,然后呢,标注的这个行参必须要被赋值,也就是啊,必须要能从请求对象中获取到对应的请求参数,能理解什么意思吗?OK,但现在的话,我们来看一下我这个age,我通过这么显示的要求从请求参数中一定要获取到age吧,但是呢,我们实际的请求有没有给他传age啊,没有,他就认为说诶这是age是必须的,但是你没有他就报这个错了,理解吧,那么其实我们也可以给他设置为什么呀。
07:30
不是必须的,我们就使用一个,哎。好,可以使用啊require来设置为不是必须的啊,不是必须的怎么设置呢?哎,你就在这里面,那H呢,你就不能直接写了,你必须要使用一个Y6等于它后面呢,你再写上一个require等于false就可以了。明白了吗?哎,这就可以了,代表着它就不是必须的了。
08:04
听懂了吗?OK,好,那么把这个写好以后呢,我们再来做一个测试啊,大家来看,我还是来发送这个请求,诶找一下你看是不是成功了,成功以后我们看后台Tom我是能拿得到了,但是这个age是不是变成一个now了,是不是OK好,那么其实像这种用法呢,我们就已经能满足我们正常的需求了,但是这里面还有一个隐藏的一个错,是吧,我也得给你演示一下,假如说我这个位置定义的是一个int类型的,能看到吗?对于我们使用来讲,Int跟引力者是没啥区别的啊,那如果说我把它定义成int类型的了,我们还是这个请求,我再走一下。告诉你这是一个500。看到没有,咋就成500了呢?你来看啊,这里面有一句话说optional,注意刚刚是不是require呀,现在变成optional就是什么可选的了吧,可选的age不能被什么呀,Into a no value就是什么呀,不能被复制为一个那。
09:09
那也就说明什么了,说明如果说我使用了这个request para以后,我默认情况下需要给它附一个值,如果我找不到那个值呢,我就要把这个闹值是不是给他附进去啊,对吧?但因为呢,它是不能接受闹值的,所以说就出现这个问题了,怎么解决呀。啊,就必须得写成引这了是吗?啊,不是的啊,注意写成in没有这个问题,但写成int呢,会存在这个问题,那么我们可以怎么做呢?好,我们可以使用什么呀?啊,可以使用一个叫做default value来啊设置来指定一个默认值啊代替什么,取代取代什么呀,Nul now啥意思呢?就在这个位置哦,在这个位置写一个什么呀,Default value,比如说如果说你没有的话,哎,那你就给我付个零或者什么付个什么啊付个零吧,能看懂吗?或者付个一付二都是可以的,你在这个位置具体去指定好,现在我们还是同样的请求,我们再来设,再来什么给大家演示一下,你看看哈,还是没有age,我来回车成。
10:35
疯了吧,然后来看这个位置,你看是不是变成零了。看明白了吗?OK,说错了,这就是我们request p它的一个用法,呃,给大家讲了这么几种情况啊,但是我们实际使用的时候呢,哎,你基本上都是一个注解往这一标就行了啊,基本上你这个位置标的这个参数呢,你在实际的请求中都是有的,很少有情况是没有的,理解了吗?OK。
我来说两句