上一篇講了Spring Boot項目再IDEA上的項目結(jié)構(gòu),以及注解@SpringBootApplication趾唱。因為現(xiàn)在大多數(shù)項目都是前后端分離,所以今天講的就是在Spring Boot的項目下創(chuàng)建簡單的Get接口蜻懦。
首先甜癞,創(chuàng)建一個類,因為默認(rèn)的MVC結(jié)構(gòu)就是Model—View—Controller宛乃,所以我們創(chuàng)建了一個TestController悠咱,具體如下圖
這里的五個Get接口基本上包含了一般的Get請求,那我們從頭慢慢開始講解征炼。
@RestController
@RestController析既,這個注解是什么意思呢。簡單的理解就是@ResponseBody + @Controller
->如果只是使用@RestController注解Controller谆奥,則Controller中的方法無法返回jsp頁面眼坏,配置的視圖解析器InternalResourceViewResolver不起作用,返回的內(nèi)容就是Return 里的內(nèi)容酸些。
例如:本來應(yīng)該到index.jsp頁面的空骚,則其顯示文本index.
->如果需要返回到指定頁面,則需要用 @Controller配合視圖解析器InternalResourceViewResolver才行擂仍。
->如果需要返回JSON囤屹,XML或自定義mediaType內(nèi)容到頁面,則需要在對應(yīng)的方法上加上@ResponseBody注解逢渔。
@RequestMapping("/demo")
@RequestMapping是一個用來處理請求地址映射的注解肋坚,可用于類或方法上。用于類上肃廓,表示類中的所有響應(yīng)請求的方法都是以該地址作為父路徑智厌。圖中的就是表示這個類下面的所有方法父路徑就是http://*****/demo/*****
RequestMapping一共有六個注解。
->value盲赊、method
value:指定請求的實際地址铣鹏,指定的地址可以是URI Template 模式(后面將會說明)
method:指定請求的method類型, GET哀蘑、POST诚卸、PUT葵第、DELETE等
->consumes、produces
consumes:指定處理請求的提交內(nèi)容類型(Content-Type)合溺,例如application/json, text/html
produces:指定返回的內(nèi)容類型卒密,僅當(dāng)request請求頭中的(Accept)類型中包含該指定類型才返回
->params、headers
params:指定request中必須包含某些參數(shù)值是棠赛,才讓該方法處理
headers:指定request中必須包含某些指定的header值哮奇,才能讓該方法處理請求
通過例子可以更直觀的解釋各個屬性的含義
1、value睛约、method
value指定的是UR值鼎俘,可定為三類:
a、普通的地址辩涝,類似"/api"
@RequestMapping(value="/testGet1",method= RequestMethod.GET)
publicStringTest(){
return"testGet";
}
b贸伐、含有變量的值,可以參考restful 類型的api類似“/api/{id}”
@RequestMapping(value="/testGet1/{id}",method= RequestMethod.GET)
publicStringTest(@PathVariableString id){
returnid;
}
c膀值、含有正則表達(dá)式的一類值,類似的"/api/{version:[a-z]}"
@RequestMapping(value="/testGet1/{version:[a-z]}",method= RequestMethod.GET)
publicStringTest(@PathVariableString version){
returnversion;
}
2误辑、consumes沧踏、produces
->consumes:表示方法僅處理request 中Content-Type 為指定值的請求
->produces:表示方法僅處理request中Accept頭中包含了指定值的請求
@RequestMapping(value="/testGet2",method= RequestMethod.GET,consumes="application/json",produces="application/json")
publicStringTest2(String id){
returnid;
}
表示,這個接口僅處理Content-Type='application/json'巾钉,Accept頭中包含了application/json的請求
3翘狱、params、headers
->params:表示請求參數(shù)中要有指定的key-value值才能處理該請求
->headers:表示請求頭中要包含指定的key-value值才能處理該請求
@RequestMapping(value="/testGet2",method= RequestMethod.GET,params="testKey=testValue",headers="Referer=http://weixiaochu.cn/")
publicStringTest2(){
return"";
}
例子表示只有當(dāng)請求頭中包含Referer=http://www.weixiaochu.cn/砰苍,請求參數(shù)中包含testKey潦匈,并且testKey的值是testValue值時,這個請求參能被處理
看完RequestMapping的注解赚导,我們來介紹一下關(guān)于Get請求接收參數(shù)的問題茬缩。
Get請求一般參數(shù)/值都會在URL中體現(xiàn),那么Spring Boot的Get請求參數(shù)怎么在方法中獲取到呢
@RequestMapping(value="/testGet3",method= RequestMethod.GET)
publicStringTest3(@RequestParam("id") String? idName){
returnidName;
}
這種方法是用RequestParam來獲取請求參數(shù)key=id吼旧,并且把值賦到idName中
@RequestMapping(value="/testGet4/{id}",method= RequestMethod.GET)
publicStringTest4(@PathVariableString id ){
returnid;
}
這種方法是用PathVariable凰锡,這時候一定要注意,方法接收的參數(shù)名一定要和URL中的一樣圈暗,例子中都是id
@RequestMapping(value="/testGet4",method= RequestMethod.GET)
publicStringTest4( String id ){
returnid;
}
這種方法直接讀取URL中id掂为,這個方法要確保方法的接收參數(shù)名和URL中的參數(shù)名一樣,要不然接收不成功员串。
今天就介紹RequestMapping和get方法請求的參數(shù)接收勇哗。
可以關(guān)注微信公眾號:【ITjishuzaji】 獲取最新文章