精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

取代OpenFeign:Spring Framework 6全新聲明式客戶端@HttpExchange

開發(fā) 前端
Spring不到萬不得已之時(shí),一般不會(huì)自己重復(fù)造輪子。在Http客戶端這塊一樣借力打力,提供Http統(tǒng)一調(diào)用方式RestTemplate,屏蔽了細(xì)節(jié),規(guī)范了開發(fā)者的使用,簡(jiǎn)化了開發(fā)門檻。

前言

Http是最常見的請(qǐng)求協(xié)議,每種編程語言都可發(fā)送Http請(qǐng)求。Java作為經(jīng)典編程語言之一,發(fā)送Http請(qǐng)求的客戶端更是不少,自己的內(nèi)置的就有java.net.HttpURLConnection以及Java 11以后的java.net.http.HttpClient。在Java 11之前,HttpURLConnection很難用,因此市場(chǎng)上百花齊放出現(xiàn)了不少優(yōu)秀的開源作品,典型代表為:

  • Apache HttpClient(現(xiàn)最新為Http Component 5.x)
  • OkHttp(現(xiàn)最新為OkHttp 4.x)

作為老牌的Apache HttpClient憑借著各種優(yōu)秀特征,似乎已成為了事實(shí)的標(biāo)準(zhǔn);后起之秀OkHttp不帶歷史包袱的輕裝上路,有著低網(wǎng)絡(luò)延遲、更優(yōu)秀的連接池性能,亦是一股不可輕視的力量。

Spring不到萬不得已之時(shí),一般不會(huì)自己重復(fù)造輪子。在Http客戶端這塊一樣借力打力,提供Http統(tǒng)一調(diào)用方式RestTemplate,屏蔽了細(xì)節(jié),規(guī)范了開發(fā)者的使用,簡(jiǎn)化了開發(fā)門檻。

PS:RestTemplate的底層實(shí)現(xiàn)依舊是Apache HttpClient、OkHttp、HttpURLConnection之一

以上,都還是編程式Http客戶端。隨著Spring Boot的普及,Spring Cloud的出現(xiàn),聲明式編碼變得越來越主流,因?yàn)槁暶魇?面向元數(shù)據(jù)編碼效率遠(yuǎn)高于編程式編碼效率。因此,F(xiàn)eign出現(xiàn)了,迅速成為了主流。

今年,隨著劃時(shí)代版本Spring Framework 6、Spring Boot 3、Spring Cloud 2022.0.0的發(fā)布,Spring團(tuán)隊(duì)自建了一套聲明式Http客戶端:@HttpExchange,目標(biāo)直指OpenFeign。

正文

全新的聲明式Http客戶端由Spring Framework 6提供定義,Spring Boot 3提供實(shí)現(xiàn),Spring Cloud 2022負(fù)責(zé)發(fā)揚(yáng)光大。今天我們就來體驗(yàn)一把

介紹一個(gè)免費(fèi)的、在線的Rest Http服務(wù)

由于我們需要一個(gè)提供Http Server來提供接口服務(wù),為此先給你介紹一個(gè)免費(fèi)的、24h在線的Rest Http服務(wù),省去我們自己搭建的麻煩。

地址:jsonplaceholder.typicode.com圖片每月提供近20億的請(qǐng)求,關(guān)鍵還是免費(fèi)的、可公開訪問的,好用得不要不要。

圖片

發(fā)一個(gè)簡(jiǎn)單的Http請(qǐng)求,就能獲取到數(shù)據(jù)。URL遵循Rest規(guī)范:

圖片

不挑Http或者Https,比如使用瀏覽器訪問這個(gè)URL得到的結(jié)果也是一樣的:

圖片

它提供多個(gè)Resources資源(以及多種Routes)供以訪問,對(duì)這些資源進(jìn)行增刪改查的操作,你想要的絕大部分都能滿足你。當(dāng)然,若你需要mock data是符合自己的數(shù)據(jù)結(jié)構(gòu)、業(yè)務(wù)邏輯的,可基于此項(xiàng)目做簡(jiǎn)單的修改即可,良心項(xiàng)目啊。具體詳情自行去官方體驗(yàn):https://jsonplaceholder.typicode.com。

全新聲明式Http客戶端@HttpExchange

環(huán)境聲明:Spring Boot 3.0.x

本文選用”albums“資源進(jìn)行測(cè)試:https://jsonplaceholder.typicode.com/albums的請(qǐng)求結(jié)果結(jié)構(gòu)如下:

圖片

Feign代碼示例

略!Feign的使用,相信大家再熟悉不過了,筆者這里就不費(fèi)周章。

@HttpExchange代碼示例

?????♀?按照albums的返回?cái)?shù)據(jù)結(jié)構(gòu),寫Java Bean:

/**
* 在此處添加備注信息
*
* @author YourBatman
* @since 0.0.1
*/
@Builder
@Getter
public class AlbumsReq {
@NotNull
@Positive
private Long userId;
@NotBlank
private String title;
}
/**
* 在此處添加備注信息
*
* @author YourBatman
* @since 0.0.1
*/
@Setter
@ToString
public class AlbumsResp {

private Long id;
private Long userId;
private String title;

}

順帶科普一個(gè)編碼規(guī)范:請(qǐng)求體Req中g(shù)et方法是必須的,set方法可選;響應(yīng)體Resp中set方法是必須的,get方法可選;二者都需遵循Java Bean規(guī)范! 粗暴的做法是不管需求如何,get/set一把梭,可行,但作為程序員的你應(yīng)該知道原由,理解要義。

?????♀?導(dǎo)入webflux包 此聲明式客戶端又Spring Framework 6提供,但由于其并未提供實(shí)現(xiàn)。Spring Boot 3為此提供了基于Reactive的Web實(shí)現(xiàn),因此需要導(dǎo)入webflux包:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

?????♀?編寫Http客戶端申明式接口。

/**
* 在此處添加備注信息
*
* @author YourBatman
* @since 0.0.1
*/
@HttpExchange("/albums")
public interface AlbumsClient {

@GetExchange
List<AlbumsResp> getAll();

@GetExchange("/{id}")
AlbumsResp getById(@PathVariable Long id);

@PostExchange
AlbumsResp add(@RequestBody @Valid AlbumsReq req);

}

?????♀?書寫測(cè)試用例代碼。

@SpringBootTest
class ApplicationTests {

@Autowired
private AlbumsClient albumsClient;

@Test
void contextLoads(){
System.out.println("getAll size:" + albumsClient.getAll().size());

System.out.println("getById 1:" + albumsClient.getById(1L));

// 創(chuàng)建一個(gè)
Object addedResp = albumsClient.add(AlbumsReq.builder().userId(1L).title("diy add...").build());
System.out.println("創(chuàng)建的allAlbums對(duì)象為:" + addedResp + ",現(xiàn)在總數(shù)為:" + albumsClient.getAll().size());
}

}

?????♀?運(yùn)行測(cè)試代碼,控制臺(tái)輸出:

getAll size:100
getById 1:AlbumsResp(id=1, userId=1, title=quidem molestiae enim)
創(chuàng)建的allAlbums對(duì)象為:AlbumsResp(id=101, userId=1, title=diy add...),現(xiàn)在總數(shù)為:100

完美!

小細(xì)節(jié):創(chuàng)建的時(shí)候并未制定id,發(fā)現(xiàn)id是自增的(id=101)。但這并不會(huì)保存在typicode.com的遠(yuǎn)端服務(wù)器了,不會(huì)引起總條數(shù)的變化。

@HttpExchange聲明式客戶端簡(jiǎn)析

@HttpExchange是Spring Framework 6新提供的聲明式Http客戶端,客戶端的要素由注解的屬性 + 方法簽名來定義。先來看看這個(gè)注解:

/**
* Since: 6.0
*/
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
@Reflective(HttpExchangeReflectiveProcessor.class)
public @interface HttpExchange {
@AliasFor("url")
String value() default "";
@AliasFor("value")
String url() default "";
String method() default "";
String contentType() default "";
String[] accept() default {};
}

和@RequestMapping參照對(duì)比:

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
@Reflective(ControllerMappingReflectiveProcessor.class)
public @interface RequestMapping {

String name() default "";
@AliasFor("path")
String[] value() default {};
@AliasFor("value")
String[] path() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
String[] consumes() default {};
String[] produces() default {};

}

不說一毛一樣,也是基本一樣。@HttpExchange注解可以標(biāo)注在類上和方法上,最終的URL組合起來生效。大家都是使用過Feign、使用過Spring MVC的,這就不用過多介紹了。

和@RequestMapping一樣,@HttpExchange也有其派生注解:

  • @GetExchange:GET請(qǐng)求。類似于于@GetMapping
  • @PostExchange:Post請(qǐng)求。類似于于@PostMapping
  • @PutExchange:Put請(qǐng)求。類似于于@PutMapping
  • @DeleteExchange:Delete請(qǐng)求。類似于于@DeleteMapping
  • @PatchExchange:Patch請(qǐng)求。類似于于@PatchMapping

@HttpExchange聲明式客戶端前景展望

通過interface這種聲明式使用起來比RestTemplate,或者WebClient要簡(jiǎn)單很多,大大簡(jiǎn)化了開發(fā)步驟,對(duì)開發(fā)者更加友好。

最新發(fā)布的Spirng Cloud 2022.0.0里描述得很明白:停止對(duì)OpenFeign的特征支持。言外之意:OpenFeign即將被Spring Cloud“淘汰”,接棒的那必然是@HttpExchange嘍。所以在可預(yù)見的將來,前景一片大好。

圖片

但是,筆者認(rèn)為它還不夠成熟,主要有兩點(diǎn):

  1. 還不能支持Spring-Web的注解(@RequestMapping體系),若能支持個(gè)人覺得會(huì)更為方便。
  2. 目前還只有WebClient一套實(shí)現(xiàn)(由Spring Boot提供實(shí)現(xiàn)),而它屬于Reactive Web體系,也就是必須引入webFlux相關(guān)技術(shù),而webFlux在做業(yè)務(wù)開發(fā)時(shí)優(yōu)勢(shì)不明顯,并非主流。
  1. 因?yàn)槿鬢ebClient能從Reactive Web里剝離出來,筆者覺得就好很多了。

總結(jié)

誰能想到,OpenFeign竟然都快被淘汰了,Spring的大船滾滾向前,引領(lǐng)著整個(gè)潮流,逐漸暴露出了野心,或者說感受到了危機(jī)。

先抄襲,再超越,Spring做到了。隱藏在全新的聲明式客戶端背后,其實(shí)還有Spring Framework 6背后對(duì)Web Mapping體系的重構(gòu),細(xì)心的你或許已有所發(fā)現(xiàn)。這些話題、新發(fā)現(xiàn),留予筆者和你后續(xù)接著聊。

責(zé)任編輯:姜華 來源: YourBatman
相關(guān)推薦

2024-10-11 11:32:22

Spring6RSocket服務(wù)

2013-05-30 17:52:06

2010-07-19 17:35:09

Telnet客戶端IPv6

2011-08-17 10:10:59

2010-01-06 19:09:13

.NET Framew

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2009-06-22 09:01:57

Spring聲明式事務(wù)

2010-05-31 10:11:32

瘦客戶端

2011-10-26 13:17:05

2011-03-24 13:00:31

配置nagios客戶端

2011-03-02 14:36:24

Filezilla客戶端

2010-12-21 11:03:15

獲取客戶端證書

2021-07-26 05:03:44

OpenFeign系統(tǒng)組件

2024-12-30 00:24:46

2013-10-21 09:48:35

2011-03-21 14:53:36

Nagios監(jiān)控Linux

2013-05-09 09:33:59

2011-04-06 14:24:20

Nagios監(jiān)控Linux

2009-03-04 10:27:50

客戶端組件桌面虛擬化Xendesktop

2024-12-02 09:19:44

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

99视频在线免费观看| 久久天天躁日日躁| 成人免费观看毛片| 超碰国产在线观看| 国产精品自拍一区| 91精品国产乱码久久久久久久久| 日本黄色网址大全| 国产国产一区| 精品久久久久久久久久久| 欧美极品一区| 国产黄色一区二区| 久久www成人_看片免费不卡| 久久精品99无色码中文字幕| 扒开伸进免费视频| 成人精品一区二区三区电影| 亚洲综合av网| 视频三区二区一区| 亚洲国产精品久久久久久6q| 天堂影院一区二区| 色综合91久久精品中文字幕| 国产人妻大战黑人20p| 一区中文字幕电影| 欧美日韩久久久| 少妇人妻在线视频| 黄色一级片在线观看| 久久久国产精品不卡| 成人一区二区三区四区| 亚洲视频中文字幕在线观看| 中文日韩在线| 欧美激情视频在线| 亚洲人与黑人屁股眼交| 国产欧美日韩在线一区二区| 精品久久久久久无| 91小视频在线播放| 日本精品另类| 日韩欧美a级成人黄色| 亚洲第一精品区| 成人高清在线| 久久精品欧美一区二区三区麻豆| 国产综合精品一区二区三区| 亚洲a视频在线观看| 激情久久久久久久久久久久久久久久| 欧洲日韩成人av| 国产成人精品一区二三区| 欧美视频在线观看| 久久777国产线看观看精品| 69夜色精品国产69乱| 欧美一区电影| 在线观看亚洲区| 亚洲av毛片基地| 欧美亚洲国产一区| 一本一本久久a久久精品牛牛影视| 成人免费无码大片a毛片| 动漫3d精品一区二区三区乱码| 欧美福利电影网| theporn国产精品| 91精品亚洲一区在线观看| 欧美日韩一区二区三区四区| 污片在线免费看| 福利一区二区三区视频在线观看| 在线看日本不卡| 婷婷丁香激情网| 看片一区二区| 制服丝袜国产精品| 青娱乐国产精品视频| 精品国产乱码一区二区三区| 日韩你懂的在线观看| 欧美色图校园春色| 加勒比色老久久爱综合网| 精品99一区二区| 中出视频在线观看| 欧美人与物videos另类xxxxx| 国产午夜精品麻豆| 69精品无码成人久久久久久| 日韩精品dvd| 久久国产精品电影| 精品一区在线视频| 国产精品主播| 国产欧美一区二区三区视频| 精品人妻久久久久一区二区三区 | 国产精品h片在线播放| 亚洲av无码不卡| 精彩视频一区二区三区| 国产一区二区中文字幕免费看| 香蕉av一区二区三区| 国产无一区二区| 五月天在线免费视频| 97人澡人人添人人爽欧美| 欧美午夜丰满在线18影院| 男女爽爽爽视频| 66精品视频在线观看| 亚洲性视频网址| 在线免费观看亚洲视频| 老鸭窝毛片一区二区三区| 国产啪精品视频网站| 蜜桃视频污在线观看| 国产视频一区二区在线观看| 男人的天堂成人| 天天综合av| 欧美一区二区三区思思人| 国产精品三级在线观看无码| 亚洲国产日韩欧美在线| 欧美在线一级视频| 国产成人精品a视频| 91热门视频在线观看| 在线免费一区| 成人线上视频| 欧美成人女星排行榜| 成人做爰69片免网站| 在线看片日韩| 91天堂在线视频| 二区在线观看| 欧美日韩在线视频观看| 午夜诱惑痒痒网| 成人直播大秀| 欧洲精品久久久| 国产成人手机在线| 成人免费小视频| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 精品久久久视频| av在线网站免费观看| jiujiure精品视频播放| 777午夜精品福利在线观看| 国产成人精品一区二三区四区五区| 国产亚洲精品精华液| 国产二级片在线观看| 日本超碰一区二区| 久久精品国产2020观看福利| 69视频免费看| 91色婷婷久久久久合中文| 日韩黄色片在线| 日韩一二三区| 久久国产视频网站| 国产又粗又猛又黄又爽| 国产精品美女久久久久aⅴ | 欧美美女黄色网| 国产精品一级在线观看| 最近更新的2019中文字幕| 国产黄色免费视频| 久久亚洲一区二区三区四区| 欧美深夜福利视频| 色婷婷精品视频| 91高清免费视频| 天堂中文在线视频| 岛国av一区二区三区| 女同性恋一区二区三区| 亚洲看片一区| 久久99久久精品国产| 日韩激情电影| 亚洲欧美一区二区三区情侣bbw| 韩国av中文字幕| 久久免费偷拍视频| 蜜臀久久99精品久久久酒店新书 | 日本免费a视频| 波多野结衣在线一区二区| 久久99亚洲精品| 丰满人妻一区二区三区免费视频| 亚洲国产乱码最新视频| 日本五十肥熟交尾| 亚洲男女自偷自拍| 视频一区二区三区免费观看| 欧美综合影院| 欧美成人精品xxx| 天天操天天干天天干| 黑人精品xxx一区一二区| 性欧美13一14内谢| 蜜臀av亚洲一区中文字幕| 综合网五月天| 大陆精大陆国产国语精品| 欧美一级免费视频| jizz在线免费观看| 日韩欧美aaaaaa| 久久久久久久久影院| 91丨九色丨蝌蚪富婆spa| 乱子伦视频在线看| 99视频精品全国免费| 国产精品视频福利| 色综合天天色| 久久久久久成人精品| 久草福利在线| 欧美一区二区网站| 久久青青草视频| 综合网在线视频| 亚洲国产精品无码久久久久高潮 | 国产精品高清无码在线观看| 久久精品国产免费| 国产自产在线视频| 成人在线亚洲| 九九九九精品九九九九| 欧美黄页免费| 538国产精品一区二区免费视频| gogogo高清在线观看免费完整版| 日韩精品中文字幕一区二区三区| 日韩欧美在线观看免费| 亚洲人成在线播放网站岛国| 加勒比综合在线| 国产成人免费视| 天堂在线资源视频| 在线亚洲激情| 在线观看18视频网站| 九九久久电影| 国产伦精品一区二区三区| 日韩一区二区三区在线免费观看 | 高清精品视频| 国产日韩欧美电影在线观看| heyzo高清中文字幕在线| 中文字幕成人精品久久不卡| 男人天堂网在线视频| 欧美日本高清视频在线观看| 99久热在线精品996热是什么| 亚洲欧洲日产国产综合网| 久久久久国产精品区片区无码| 国产精品正在播放| 亚洲精品高清无码视频| 99精品免费视频| 蜜桃网站在线观看| 日韩免费av| 欧美一区国产一区| 日本福利一区| 国产精品国产精品国产专区蜜臀ah| 日韩毛片免费看| 国产精品扒开腿做| 一个人看的www视频在线免费观看| 久久69精品久久久久久国产越南| 亚洲乱亚洲乱妇| 一本一本久久a久久精品牛牛影视| 亚洲 小说区 图片区 都市| 日韩午夜在线影院| 91九色蝌蚪91por成人| 欧美性色综合网| 91丝袜一区二区三区| 亚洲成人精品一区二区| 精品午夜福利视频| 亚洲国产中文字幕在线视频综合| 欧美特级一级片| 亚洲欧美激情视频在线观看一区二区三区| 午夜时刻免费入口| 97精品电影院| 97香蕉碰碰人妻国产欧美| 成人亚洲精品久久久久软件| 18禁一区二区三区| 成人美女在线视频| 秘密基地免费观看完整版中文| 国产乱对白刺激视频不卡| 亚洲网中文字幕| 国产成人综合亚洲91猫咪| 久久久久亚洲av无码网站| 高潮精品一区videoshd| 又黄又色的网站| 99在线视频精品| 免费成人蒂法网站| 26uuu另类欧美亚洲曰本| 日韩中文字幕电影| 国产欧美日韩另类一区| 激情高潮到大叫狂喷水| 136国产福利精品导航| 精品一区在线观看视频| 亚洲大片精品永久免费| 激情综合网五月婷婷| 欧美日韩另类字幕中文| 人人草在线观看| 欧美日韩精品一区二区在线播放| 夜夜躁狠狠躁日日躁av| 欧美一区二区三区在线视频| 韩国av电影在线观看| 亚洲韩国日本中文字幕| 国产综合在线观看| www.日韩免费| 爱啪视频在线观看视频免费| 欧美在线性爱视频| 欧美日韩va| 成人在线观看av| 亚洲女娇小黑人粗硬| 亚洲精品在线视频观看| 亚洲午夜精品一区 二区 三区| 欧美一区二区视频在线播放| 在线亚洲欧美| 午夜久久福利视频| 99久久er热在这里只有精品15 | 亚洲天天做日日做天天谢日日欢| 久久无码精品丰满人妻| 欧美日韩亚洲激情| 亚洲一区在线观| 精品va天堂亚洲国产| 91精彩视频在线播放| 久久久久国产视频| 高清欧美日韩| 国产精品日韩高清| 成人一区不卡| 男女猛烈激情xx00免费视频| 免费一级片91| 国产极品一区二区| 亚洲欧洲一区二区在线播放| 日韩毛片在线播放| 欧美日韩精品三区| 熟妇人妻系列aⅴ无码专区友真希| 一区二区三区高清国产| 狂野欧美激情性xxxx欧美| 国产精品扒开腿做爽爽爽男男 | 国产va免费精品观看精品| 久久精品美女| 欧美日韩99| 免费精品99久久国产综合精品应用| 成人的网站免费观看| 人人干在线观看| 在线观看日韩高清av| 内射后入在线观看一区| 日韩亚洲在线观看| 三上悠亚激情av一区二区三区| 99高清视频有精品视频| 日韩精品2区| av免费网站观看| 波多野结衣中文一区| 欧洲第一无人区观看| 欧美曰成人黄网| 久草视频视频在线播放| 88国产精品欧美一区二区三区| 欧美激情三级| 曰韩不卡视频| 日本免费在线视频不卡一不卡二| av在线播放网址| 亚洲美腿欧美偷拍| 又污又黄的网站| 国产亚洲欧美一区| 韩国成人漫画| 久久久久资源| 99成人在线| 成人区人妻精品一区二| 亚洲精品成人悠悠色影视| 一区二区美女视频| 中文字幕在线日韩 | 四虎884aa成人精品| 欧美亚洲一区二区在线| 国产尤物视频在线| 日本精品久久电影| 一道本一区二区三区| 国产免费一区二区三区视频| 26uuu精品一区二区在线观看| 天天操天天干视频| 亚洲黄一区二区| 九色porny视频在线观看| 国产一区视频观看| 国产视频久久| 精品国产av无码| 欧美在线观看你懂的| 成年人在线视频免费观看| 国产精品久久久久高潮| 欧美国产美女| 香蕉网在线视频| 亚洲一区二区免费视频| 狠狠综合久久av一区二区| 国模私拍视频一区| 久久综合社区| 日韩手机在线观看视频| 国产精品理伦片| 国产视频在线观看视频| 欧美人与性动交a欧美精品| 凹凸成人在线| 国产淫片av片久久久久久| 国产欧美精品一区| 国产毛片一区二区三区va在线 | 亚洲午夜性刺激影院| 欧美v亚洲v综合v国产v仙踪林| 中文字幕乱码一区二区三区| 国产精品亚洲视频| 可以在线观看av的网站| 国产一区二区黑人欧美xxxx| 欧美高清免费| 国产一二三在线视频| wwwwxxxxx欧美| 在线免费观看中文字幕| 久久69精品久久久久久国产越南| 国偷自产av一区二区三区| 岳毛多又紧做起爽| 亚洲色图清纯唯美| 少妇高潮一区二区三区99小说| 国产精品福利网站| 中文字幕一区二区三区乱码图片| 在线播放第一页| 欧洲av在线精品| 日本成人不卡| 欧美一区二区高清在线观看| 久久99国产精品麻豆| 日韩av在线天堂| 精品国内自产拍在线观看| 欧美大片网址| 亚洲五月激情网| 第一福利永久视频精品| 九七电影韩国女主播在线观看| 精品国产一区二区三区麻豆免费观看完整版 | 蜜臀久久99精品久久久久久宅男| 久久久久97| 日韩成人av免费| 色香色香欲天天天影视综合网 | 啪一啪鲁一鲁2019在线视频| 国产韩国精品一区二区三区| 玖玖爱在线观看| 欧美日韩成人高清| 五月天av在线| 欧美一级中文字幕|