日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring RestTemplate基本使用介紹

瀏覽:51日期:2023-09-15 10:31:16

  上篇文件介紹Eureka服務(wù)的文章中,我們介紹到consumer從Eureka中通過LoadBalancerClient獲取到服務(wù)端地址信息后通過RestTemplate來(lái)遠(yuǎn)程調(diào)用服務(wù)的場(chǎng)景,本文來(lái)具體介紹下RestTemplate的使用

RestTemplate

  SpringRestTemplate是Spring 提供的用于訪問 Rest 服務(wù)的客端, RestTemplate提供了多種便捷訪問遠(yuǎn)程Http服務(wù)的方法,能夠大大提高客戶端的編寫效率,所以很多客戶端比如Android或者第三方服務(wù)商都是使用RestTemplate 請(qǐng)求 restful服務(wù)

1.環(huán)境搭建

  為了演示RestTemplate的使用,我們創(chuàng)建兩個(gè)SpringBoot項(xiàng)目,一個(gè)provider作為server端,一個(gè)consumer作為服務(wù)調(diào)用方法

Spring RestTemplate基本使用介紹

2.API方法介紹

API 說(shuō)明 getForEntity() 發(fā)送一個(gè)HTTP GET請(qǐng)求,返回的ResponseEntity包含了響應(yīng)體所映射成的對(duì)象 getForObject() 發(fā)送一個(gè)HTTP GET請(qǐng)求,返回的請(qǐng)求體將映射為一個(gè)對(duì)象 postForEntity() POST 數(shù)據(jù)到一個(gè)URL,返回包含一個(gè)對(duì)象的ResponseEntity,這個(gè)對(duì)象是從響應(yīng)體中映射得到的 postForObject() POST 數(shù)據(jù)到一個(gè)URL,返回根據(jù)響應(yīng)體匹配形成的對(duì)象 headForHeaders() 發(fā)送HTTP HEAD請(qǐng)求,返回包含特定資源URL的HTTP頭 optionsForAllow() 發(fā)送HTTP OPTIONS請(qǐng)求,返回對(duì)特定URL的Allow頭信息 postForLocation() POST 數(shù)據(jù)到一個(gè)URL,返回新創(chuàng)建資源的URL put() PUT 資源到特定的URL delete() 在特定的URL上對(duì)資源執(zhí)行HTTP DELETE操作 exchange() 在URL上執(zhí)行特定的HTTP方法,返回包含對(duì)象的ResponseEntity,這個(gè)對(duì)象是從響應(yīng)體中映射得到的 execute() 在URL上執(zhí)行特定的HTTP方法,返回一個(gè)從響應(yīng)體映射得到的對(duì)象

3.具體使用

  我們通過常用的http協(xié)議的四種請(qǐng)求方式來(lái)看下效果

3.1 無(wú)參請(qǐng)求

  我們先來(lái)看下服務(wù)端請(qǐng)求方法不需要接收參數(shù),

getForEntity

  通過getForEntity來(lái)實(shí)現(xiàn)

服務(wù)端

/** * 無(wú)參,返回字符串 * @return */ @GetMapping('/server1') public String server1String(){ System.out.println('服務(wù)端被訪問了...'); return 'success'; }

調(diào)用

/** * RestTemplate 訪問 provider的第一個(gè)服務(wù) server1 */@Testpublic void contextLoads() { String url = 'http://localhost:8080/server1'; RestTemplate restTemplate = new RestTemplate(); ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class); // 獲取響應(yīng)的狀態(tài) HttpStatus statusCode = entity.getStatusCode(); // 獲取響應(yīng)的header信息 HttpHeaders headers = entity.getHeaders(); // 獲取響應(yīng)的body信息 String msg = entity.getBody(); System.out.println(statusCode); System.out.println(headers); System.out.println(msg);}

輸出結(jié)果

Spring RestTemplate基本使用介紹

說(shuō)明:

1.getForEntity()方法執(zhí)行返回的類型是ResponseEntity<T>,ResponseEntity<T>是Spring對(duì)HTTP請(qǐng)求響應(yīng)的封裝,包括了幾個(gè)重要的元素,如響應(yīng)碼、contentType、contentLength、響應(yīng)消息體等,在輸出結(jié)果中我們能夠看到2.getForEntity()的參數(shù)中第一個(gè)是請(qǐng)求地址,第二個(gè)是T對(duì)應(yīng)的類型

getForObject

  getForObject函數(shù)實(shí)際上是對(duì)getForEntity函數(shù)的進(jìn)一步封裝,如果你只關(guān)注返回的消息體的內(nèi)容,對(duì)其他信息都不關(guān)注,此時(shí)可以使用getForObject

/** * getForObject 訪問 */@Testpublic void contextLoadsObject() { String url = 'http://localhost:8080/server1'; RestTemplate restTemplate = new RestTemplate(); // 直接返回的就是我們需要的結(jié)果,但是獲取不到對(duì)應(yīng)的響應(yīng)狀態(tài)等信息 String msg = restTemplate.getForObject(url,String.class); System.out.println(msg);}

3.2 有參請(qǐng)求

服務(wù)端方法需要接收調(diào)用者傳遞的參數(shù)

/** * 有參,基本數(shù)據(jù)類型 返回字符串 * @return */ @RequestMapping('/server2') public String server2String(Integer id,String userName){ System.out.println('服務(wù)端被訪問了...'+id+' '+userName); return 'success--參數(shù)得到了'; } /** * 有參,基本數(shù)據(jù)類型 返回字符串 * @return */ @RequestMapping('/server3') public String server3String(User user){ System.out.println('服務(wù)端被訪問了...'+user); return 'success--參數(shù)得到了'; }

getForEntity

調(diào)用者可以通過兩種方式調(diào)用第一種方式通過數(shù)字占位符,最后是一個(gè)可變長(zhǎng)度的參數(shù),來(lái)一一替換前面的占位符

/*** 請(qǐng)求服務(wù)并且傳遞參數(shù)* 基本數(shù)據(jù)類型*/@Testpublic void testServer2(){// 參數(shù)在鏈接地址后 String url = 'http://localhost:8080/server2?id={1}&userName={2}'; RestTemplate restTemplate = new RestTemplate(); ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class,5,'bobo'); System.out.println(entity.getBody());}

第二種就是使用name={name}這種形式,最后一個(gè)參數(shù)是一個(gè)map,map的key即為前邊占位符的名字,map的value為參數(shù)值

/** * 請(qǐng)求服務(wù)并且傳遞參數(shù) * 基本數(shù)據(jù)類型 */@Testpublic void testServer3(){ String url = 'http://localhost:8080/server2?id={id}&userName={userName}'; Map<String,Object> map = new HashMap<>(); map.put('id',6); map.put('userName','波波烤鴨'); RestTemplate restTemplate = new RestTemplate(); ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class,map); System.out.println(entity.getBody());}

postForEntity

  如果是post方式提交請(qǐng)求傳遞參數(shù)我們可以這樣使用,如下

服務(wù)端:注意要加@RequestBody注解

/** * 有參,基本數(shù)據(jù)類型 返回字符串 * @return */@RequestMapping('/server3')public String server3String(@RequestBody User user){ System.out.println('服務(wù)端被訪問了...'+user); return 'success--參數(shù)得到了';}

客戶端

/** * postForEntity(url,user,String.class) * url:請(qǐng)求地址 * user:請(qǐng)求提交的數(shù)據(jù) * String.class 接收返回?cái)?shù)據(jù)的類型 */@Testpublic void contextLoadsObject1() { String url = 'http://localhost:8080/server3'; RestTemplate restTemplate = new RestTemplate(); User user = new User(1,'bobo','中國(guó)'); // 直接返回的就是我們需要的結(jié)果,但是獲取不到對(duì)應(yīng)的響應(yīng)狀態(tài)等信息 String msg = restTemplate.postForEntity(url,user,String.class).getBody(); System.out.println(msg);}

3.3 返回自己類型

服務(wù)端返回的我們自定義類型的數(shù)據(jù)

/** * 返回自定義對(duì)象 * @return */ @RequestMapping('/server4') public User server4Object(){ System.out.println('服務(wù)端被訪問了...'); return new User(2,'李四','深圳'); }

客戶端:

/** * 返回類型為自定義類型 */@Testpublic void testServer5(){ String url = 'http://localhost:8080/server4'; RestTemplate restTemplate = new RestTemplate(); ResponseEntity<User> entity = restTemplate.getForEntity(url, User.class); System.out.println(entity.getBody());}

使用getForEntity和getForObject及postForEntity和postForObject都差不多,注意接收的類型即可。

3.4 返回的list帶泛型的場(chǎng)景

此處我們需要使用到exchange方法,特定如下

允許調(diào)用者指定HTTP請(qǐng)求的方法(GET,POST,PUT等) 可以在請(qǐng)求中增加body以及頭信息,其內(nèi)容通過參‘HttpEntity<?>requestEntity’描述 exchange支持‘含參數(shù)的類型’(即泛型類)作為返回類型,該特性通過‘ParameterizedTypeReferenceresponseType’描述

客戶端調(diào)用

/** * 返回 集合帶泛型 * @return */@RequestMapping('/server5')public List<User> server5List(){ System.out.println('服務(wù)端被訪問了...'); return Arrays.asList(new User(2,'李四1','深圳') ,new User(3,'李四2','深圳') ,new User(4,'李四3','深圳'));}

Spring RestTemplate基本使用介紹

好了~RestTemplate的基本使用我們就介紹到此處,更多相關(guān)Spring RestTemplate使用內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
四虎成人精品一区二区免费网站| 亚洲女同一区| 欧美日韩精品一区二区三区在线观看| 青青草视频一区| 亚洲午夜一级| 一区二区三区四区日韩| 亚洲男人在线| 久久一区欧美| 中文一区在线| 国产精品玖玖玖在线资源| 国产一区91| 国产精品久久国产愉拍| 日韩不卡在线| 日韩在线观看中文字幕| 国产成年精品| 亚洲精品在线a| 欧美一区=区| 男人的天堂久久精品| 国产亚洲精品v| 五月精品视频| 亚洲午夜国产成人| 天海翼亚洲一区二区三区| 免费观看久久久4p| 亚洲精品伊人| 麻豆成人综合网| 手机在线电影一区| 久久久精品网| 蜜臀av亚洲一区中文字幕| 日本免费一区二区视频| 国产毛片精品| 免费高潮视频95在线观看网站| 99久久夜色精品国产亚洲狼| 国产午夜精品一区二区三区欧美| 亚洲三级精品| 日韩av网站在线免费观看| 免费在线欧美黄色| 日韩二区在线观看| 麻豆亚洲精品| 久久久久99| 精品国产不卡| 久久国产欧美日韩精品| 国产精品社区| jiujiure精品视频播放| 色婷婷综合网| 免费人成精品欧美精品 | 高清一区二区三区av| 激情久久五月| 亚洲精品大全| 欧美日韩尤物久久| 日韩精品一区二区三区av| 国产精品av一区二区| 五月综合激情| 国产精品美女午夜爽爽| 99精品99| 蜜臀va亚洲va欧美va天堂| 久久视频精品| 日韩精品一级中文字幕精品视频免费观看 | 日韩欧美中文| 国产精品网在线观看| 老司机精品久久| 水蜜桃精品av一区二区| 国产精品videossex| 日韩在线麻豆| 香蕉成人久久| 激情欧美亚洲| 日本久久成人网| 久久男人天堂| 国产在线看片免费视频在线观看| 国产精品一区二区精品视频观看| 水蜜桃久久夜色精品一区的特点 | 欧美国产偷国产精品三区| 精品一区免费| 久久久久99| 高潮一区二区| 成人片免费看| 久久精品一本| 成人欧美一区二区三区的电影| 亚洲字幕久久| 久久精品99国产精品日本| 亚洲精一区二区三区| 欧美在线日韩| 麻豆成人91精品二区三区| 久久麻豆视频| 香蕉久久99| 亚洲作爱视频| 夜夜嗨一区二区三区| 国产黄大片在线观看| 免播放器亚洲| 99热免费精品| 国产精品videossex久久发布| 国模大尺度视频一区二区| 久久久久久久久丰满| 免费美女久久99| 久久精品人人| 国产精品免费看| 免费视频一区二区三区在线观看 | 九九99久久精品在免费线bt| 免费亚洲婷婷| 在线国产一区二区| 精品亚洲成人| 国产一区国产二区国产三区 | 精品国产第一福利网站| 亚洲精品乱码日韩| 亚洲欧美日韩国产| 亚洲三级欧美| 国产成人精品亚洲线观看 | 亚洲成人三区| 精品久久国产一区| 欧美黄色一区| 亚洲va中文在线播放免费| 亚洲三级毛片| 91精品一区二区三区综合在线爱 | 日韩一区二区三区免费播放| 99视频在线精品国自产拍免费观看| 日本伊人午夜精品| 欧美福利一区| 国产精品嫩草影院在线看| 中文日韩欧美| 日韩在线短视频| 国产香蕉精品| 亚洲香蕉视频| 日本精品不卡| 精品久久久网| 麻豆成人综合网| 国产精品日本一区二区不卡视频| 亚洲美女久久精品| 久久国内精品| 日韩精品免费观看视频| 日韩国产专区| 日韩av一区二| 亚洲视频播放| 日韩视频网站在线观看| 欧美日韩中文字幕一区二区三区| 国产日韩欧美一区二区三区 | 成人免费网站www网站高清| 99久久夜色精品国产亚洲1000部| аⅴ资源天堂资源库在线| 久久精品国内一区二区三区| 国产精品观看| 国产精品久久久一区二区| 欧美在线91| 牛牛精品成人免费视频| 精品亚洲精品| 久久这里只有| se01亚洲视频| 99日韩精品| 日韩欧美在线精品| 久久精品三级| 免费欧美一区| 男女性色大片免费观看一区二区 | 蜜桃视频一区二区| 日韩国产在线观看| 四虎8848精品成人免费网站| 少妇久久久久| 91精品美女| 久久久久免费av| 日韩成人午夜精品| 精品国产精品国产偷麻豆 | 午夜精品免费| 久久国产免费看| 国产字幕视频一区二区| 国产一区二区三区四区五区传媒| 国产黄色精品| 美女久久精品| 成人啊v在线| 在线亚洲国产精品网站| 91久久久精品国产| 91超碰国产精品| 一区二区三区国产盗摄| 久久不卡国产精品一区二区| 福利在线一区| 91久久久精品国产| 日韩精品久久理论片| 国产福利资源一区| 人人香蕉久久| 精品久久久中文字幕| 国产精品老牛| 国产中文字幕一区二区三区| 婷婷综合在线| 精品色999| 日韩精品三区四区| 日韩伦理福利| 亚洲精品大片| 久久激情一区| 国产精品久久久久久久久久久久久久久 | 欧美一级精品| 精品久久电影| 在线精品国产亚洲| 视频在线不卡免费观看| 中文字幕一区二区av| 性欧美xxxx免费岛国不卡电影| 欧美日韩一区二区高清| 中文精品在线| 日本久久成人网| 国产一级成人av| 国产91一区| 超碰99在线| 久久精品国产免费| 青青草91久久久久久久久| 精品一区三区|