日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Swagger的简单入门【转载】

發布時間:2023/12/13 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swagger的简单入门【转载】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?


一、Swagger簡介

  上一篇文章中我們介紹了Spring Boot對Restful的支持,這篇文章我們繼續討論這個話題,不過,我們這里不再討論Restful API如何實現,而是討論Restful API文檔的維護問題。

  在日常的工作中,我們往往需要給前端(WEB端、IOS、Android)或者第三方提供接口,這個時候我們就需要給他們提供一份詳細的API說明文檔。但維護一份詳細的文檔可不是一件簡單的事情。首先,編寫一份詳細的文檔本身就是一件很費時費力的事情,另一方面,由于代碼和文檔是分離的,所以很容易導致文檔和代碼的不一致。這篇文章我們就來分享一種API文檔維護的方式,即通過Swagger來自動生成Restuful API文檔。

  那什么是Swagger?我們可以直接看下官方的描述:

THE WORLD'S MOST POPULAR API TOOLING Swagger is the world’s largest framework of API developer tools for the OpenAPI Specification(OAS), enabling development across the entire API lifecycle, from design and documentation, to test and deployment.

  這段話首先告訴大家Swagger是世界上最流行的API工具,并且Swagger的目的是支撐整個API生命周期的開發,包括設計、文檔以及測試和部署。這篇文章中我們會用到Swagger的文檔管理和測試功能。

  對Swagger的作用有了基本的認識后,我們現在來看看怎么使用。

?

二、Swagger與Spring boot集成

  第一步:引入對應jar包:

<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.6.0</version> </dependency> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.6.0</version> </dependency>

  第二步,基本信息配置:

@Configuration @EnableSwagger2 public class Swagger2Config {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.pandy.blog.rest")).paths(PathSelectors.regex("/rest/.*")).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("Blog系統Restful API").description("Blog系統Restful API").termsOfServiceUrl("http://127.0.0.1:8080/").contact("liuxiaopeng").version("1.0").build();}}

  基礎的配置是對整個API文檔的描述以及一些全局性的配置,對所有接口起作用。這里涉及到兩個注解:

  @Configuration是表示這是一個配置類,是JDK自帶的注解,前面的文章中也已做過說明。

  @EnableSwagger2的作用是啟用Swagger2相關功能。

  在這個配置類里面我么實例化了一個Docket對象,這個對象主要包括三個方面的信息:

    (1)整個API的描述信息,即ApiInfo對象包括的信息,這部分信息會在頁面上展示。

    (2)指定生成API文檔的包名。

    (3)指定生成API的路徑。按路徑生成API可支持四種模式,這個可以參考其源碼:

public class PathSelectors {private PathSelectors() {throw new UnsupportedOperationException();}public static Predicate<String> any() {return Predicates.alwaysTrue();}public static Predicate<String> none() {return Predicates.alwaysFalse();}public static Predicate<String> regex(final String pathRegex) {return new Predicate<String>() {public boolean apply(String input) {return input.matches(pathRegex);}};}public static Predicate<String> ant(final String antPattern) {return new Predicate<String>() {public boolean apply(String input) {AntPathMatcher matcher = new AntPathMatcher();return matcher.match(antPattern, input);}};} }

  從源碼可以看出,Swagger總共支持任何路徑都生成、任何路徑都不生成以及正則匹配和ant 模式匹配四種方式。大家可能比較熟悉的是前三種,最后一種ant匹配,如果不熟悉ant的話就直接忽略吧,前三種應該足夠大家在日常工作中使用了。

  有了上面的配置我們就可以看到效果了,我在com.pandy.blog.rest這個包下面有一個ArticleRestController這個類,源碼如下:

@RestController public class ArticleRestController {@Autowiredprivate ArticleService articleService;@RequestMapping(value = "/rest/article", method = POST, produces = "application/json")public WebResponse<Map<String, Object>> saveArticle(@RequestBody Article article) {article.setUserId(1L);articleService.saveArticle(article);Map<String, Object> ret = new HashMap<>();ret.put("id", article.getId());WebResponse<Map<String, Object>> response = WebResponse.getSuccessResponse(ret);return response;}@RequestMapping(value = "/rest/article/{id}", method = DELETE, produces = "application/json")public WebResponse<?> deleteArticle(@PathVariable Long id) {Article article = articleService.getById(id);article.setStatus(-1);articleService.updateArticle(article);WebResponse<Object> response = WebResponse.getSuccessResponse(null);return response;}@RequestMapping(value = "/rest/article/{id}", method = PUT, produces = "application/json")public WebResponse<Object> updateArticle(@PathVariable Long id, @RequestBody Article article) {article.setId(id);articleService.updateArticle(article);WebResponse<Object> response = WebResponse.getSuccessResponse(null);return response;}@RequestMapping(value = "/rest/article/{id}", method = GET, produces = "application/json")public WebResponse<Article> getArticle(@PathVariable Long id) {Article article = articleService.getById(id);WebResponse<Article> response = WebResponse.getSuccessResponse(article);return response;}@RequestMapping(value = "/test/{id}", method = GET, produces = "application/json")public WebResponse<?> getNoApi(){WebResponse<?> response = WebResponse.getSuccessResponse(null);return response;} }

  啟動Spring boot,然后訪問:http://127.0.0.1:8080/swagger-ui.html即可看到如下結果:

?  這個頁面上可以看到,除了最后一個接口/test/{id}外,其他接口都生成對應的文檔,最后一個接口因為不滿足我們配置的路徑——“/rest/.*”,所以沒有生成文檔。

  我們還可以點進去看一下每一個具體的接口,我們這里以“POST /rest/article”這個接口為例:

  可以看到,Swagger為每一個接口都生成了返回結果和請求參數的示例,并且能直接通過下面的"try it out"進行接口訪問,方面大家對接口進行測試。整體上感覺Swagger還是很強大的,配置也比較簡單。

?

三、Swagger API詳細配置

?  不過大家看到這里肯定會有點疑問:

    第一個問題:這個返回結果和請求參數都沒有文字性的描述,這個可不可以配置?

    第二個問題:這個請求參應該是直接根據對象反射出來的結果,但是不是對象的每個屬性都是必傳的,另外參數的值也不一定滿足我們的需求,這個能否配置?

  答案肯定是可以的,現在我們就來解決這兩個問題,直接看配置的代碼:

package com.pandy.blog.rest;import com.pandy.blog.dto.WebResponse; import com.pandy.blog.po.Article; import com.pandy.blog.service.ArticleService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.HashMap; import java.util.List; import java.util.Map;import static org.springframework.web.bind.annotation.RequestMethod.DELETE; import static org.springframework.web.bind.annotation.RequestMethod.GET; import static org.springframework.web.bind.annotation.RequestMethod.POST; import static org.springframework.web.bind.annotation.RequestMethod.PUT;@RestController @RequestMapping("/rest") public class ArticleRestController {@Autowiredprivate ArticleService articleService;@RequestMapping(value = "/article", method = POST, produces = "application/json")@ApiOperation(value = "添加文章", notes = "添加新的文章", tags = "Article",httpMethod = "POST")@ApiImplicitParams({@ApiImplicitParam(name = "title", value = "文章標題", required = true, dataType = "String"),@ApiImplicitParam(name = "summary", value = "文章摘要", required = true, dataType = "String"),@ApiImplicitParam(name = "status", value = "發布狀態", required = true, dataType = "Integer")})@ApiResponses({@ApiResponse(code=200,message="成功",response=WebResponse.class),})public WebResponse<Map<String,Object>> saveArticle(@RequestBody Article article){articleService.saveArticle(article);Map<String,Object> ret = new HashMap<>();ret.put("id",article.getId());WebResponse<Map<String,Object>> response = WebResponse.getSuccessResponse(ret);return response;}@ApiOperation(value = "刪除文章", notes = "根據ID刪除文章", tags = "Article",httpMethod = "DELETE")@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "文章ID", required = true, dataType = "Long")})@RequestMapping(value = "/{id}",method = DELETE,produces = "application/json")public WebResponse<?> deleteArticle(@PathVariable Long id){Article article = articleService.getById(id);article.setStatus(-1);articleService.saveArticle(article);return WebResponse.getSuccessResponse(new HashMap<>());}@ApiOperation(value = "獲取文章列表", notes = "可以根據標題進行模糊查詢", tags = "Article",httpMethod = "GET")@ApiImplicitParams({@ApiImplicitParam(name = "title", value = "文章標題", required = false, dataType = "String"),@ApiImplicitParam(name = "pageSize", value = "每頁文章數量", required = false, dataType = "Integer"),@ApiImplicitParam(name = "pageNum", value = "分頁的頁碼", required = false, dataType = "Integer")})@RequestMapping(value = "/article/list", method = GET, produces = "application/json")public WebResponse<?> listArticles(String title, Integer pageSize, Integer pageNum) {if (pageSize == null) {pageSize = 10;}if (pageNum == null) {pageNum = 1;}int offset = (pageNum - 1) * pageSize;List<Article> articles = articleService.getArticles(title, 1L, offset, pageSize);return WebResponse.getSuccessResponse(articles);}@ApiOperation(value = "更新文章", notes = "更新文章內容", tags = "Article",httpMethod = "PUT")@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "文章ID", required = true, dataType = "Long"),@ApiImplicitParam(name = "title", value = "文章標題", required = false, dataType = "String"),@ApiImplicitParam(name = "summary", value = "文章摘要", required = false, dataType = "String"),@ApiImplicitParam(name = "status", value = "發布狀態", required = false, dataType = "Integer")})@RequestMapping(value = "/article/{id}", method = PUT, produces = "application/json")public WebResponse<?> updateArticle(@PathVariable Long id,@RequestBody Article article){article.setId(id);articleService.updateArticle(article);return WebResponse.getSuccessResponse(new HashMap<>());}}

  我們解釋一下代碼中幾個注解及相關屬性的具體作用:

  @ApiOperation,整個接口屬性配置:

    value:接口說明,展示在接口列表。

    notes:接口詳細說明,展示在接口的詳情頁。

    tags:接口的標簽,相同標簽的接口會在一個標簽頁下展示。

    httpMethod:支持的HTTP的方法。

  @ApiImplicitParams,@ApiImplicitParam的容器,可包含多個@ApiImplicitParam注解

  @ApiImplicitParam,請求參數屬性配置:

    name:參數名稱

    value:參數說明

    required:是否必須

    dataType:數據類型  

  @ApiResponses,@ApiResponse容器,可以包含多個@ApiResponse注解

  @ApiResponse,返回結果屬性配置:

    code:返回結果的編碼。

    message:返回結果的說明。

    response:返回結果對應的類。    

  完成以上配置后,我們再看下頁面效果:

列表頁:

      

?  可以看到,現在接口都位于Article這個tag下,并且接口后面也有了我們配置好的說明。我們再看下”POST /rest/article“這個接口的詳情頁:

  圖片太大,只截取了title屬性的展示,其他幾個參數的類似。我們可以從頁面上看到請求參數的說明是有的,不過這不是我們預期的效果,如果我們的參數僅僅是簡單類型,這種方式應該沒問題,但現在的問題是我們的請求參數是一個對象,那如何配置呢?這就涉及到另外兩個注解:@ApiModel和@ApiModelProperty,我們還是先看代碼,然后再解釋,這樣更容易理解:

@ApiModel(value="article對象",description="新增&更新文章對象說明") public class Article {@Id@GeneratedValue@ApiModelProperty(name = "id",value = "文章ID",required = false,example = "1")private Long id;@ApiModelProperty(name = "title",value = "文章標題",required = true,example = "測試文章標題")private String title;@ApiModelProperty(name = "summary",value = "文章摘要",required = true,example = "測試文章摘要")private String summary;@ApiModelProperty(hidden = true)private Date createTime;@ApiModelProperty(hidden = true)private Date publicTime;@ApiModelProperty(hidden = true)private Date updateTime;@ApiModelProperty(hidden = true)private Long userId;@ApiModelProperty(name = "status",value = "文章發布狀態",required = true,example = "1")private Integer status;@ApiModelProperty(name = "type",value = "文章分類",required = true,example = "1")private Integer type; }

  @ApiModel是對整個類的屬性的配置:

    value:類的說明

    description:詳細描述

  @ApiModelProperty是對具體每個字段的屬性配置:

    name:字段名稱

    value:字段的說明

    required:是否必須

    example:示例值

    hidden:是否顯示

  完成上面的配置后,我們再來看效果:

?

  現在我們可以看到,字段的說明都已經展示出來,并且,示例中字段的值也變成了我們配置的example屬性對應的值了。這樣,一份完整的API文檔就生成了,并且該文檔與代碼緊密的聯系在一起,而不是隔離的兩個部分。除此之外,我們還可以直接通過該文檔很方便的進行測試,我們只需要點擊Example Value下黃色的框,里面的內容就會自動復制到article對應的value框中,然后在點擊“Try it out”就可以發起http請求了。

?

  點擊Try it out后,我們就可以看到返回的結果:

  操作還是很方便的,相比Junit和postman,通過Swagger來測試會更加便捷,當然,Swagger的測試并不能代替單元測試,不過,在聯調的時候還是有非常大的作用的。

?

四、總結

  總體上來說,Swagger的配置還是比較簡單的,并且Swagger能夠自動幫我們生成文檔確實為我們節省了不少工作,對后續的維護也提供了很大的幫助。除此之外,Swagger還能根據配置自動為我們生成測試的數據,并且提供對應的HTTP方法,這對我們的自測和聯調工作也有不少的幫助,所以我還是推薦大家在日常的開發中去使用Swagger,應該可以幫助大家在一定程度上提高工作效率的。最后,留一個問題給大家思考吧,就是該文檔是可以直接通過頁面來訪問的,那我們總不能把接口直接暴露在生產環境吧,尤其是要對外提供服務的系統,那我們怎么才能在生產環節中關閉這個功能呢?方法有很多,大家可以自己嘗試一下。

轉載于:https://www.cnblogs.com/0813lichenyu/p/8295256.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Swagger的简单入门【转载】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲国产精品视频在线观看 | 97超视频在线观看 | 欧美日韩国产一区二 | 免费国产一区二区视频 | 亚洲有 在线 | 久久国产精品免费 | 东方av在线免费观看 | 97av.com| 欧美成人性战久久 | 久久久久久久久毛片精品 | 国产成人精品一区二区三区在线观看 | 亚洲免费黄色 | 九色精品 | av中文字幕日韩 | 欧美一区中文字幕 | 亚洲免费色 | 中国一级片在线播放 | 国产最新精品视频 | 免费看片日韩 | 一级片色播影院 | 久久桃花网 | 精品国精品自拍自在线 | 色999视频| 国产精品一区二区三区在线播放 | 久久综合色影院 | 久久久久这里只有精品 | 免费福利在线观看 | 精品久久网 | 玖玖999| 国产一级性生活 | 久久免费公开视频 | 色999视频| 天天色天天射天天综合网 | 久久久久国产精品免费 | 99国产精品视频免费观看一公开 | 在线精品亚洲一区二区 | 狠狠狠色丁香综合久久天下网 | 国产精品18videosex性欧美 | 四虎成人精品 | 国产日韩欧美网站 | www在线观看视频 | 91私密视频 | 久久影视中文字幕 | 久久av免费| www.成人精品 | 久久精品香蕉 | 精品一区二区在线观看 | 狠狠的干狠狠的操 | 日韩狠狠操 | 色五月成人 | 国产国产人免费人成免费视频 | 婷婷丁香五 | 国产精品一区二区无线 | 久久久 激情 | 99爱国产精品 | 国产91精品高清一区二区三区 | 午夜久久久久久久 | 久久99久久久久久 | 国产精品久久网站 | 欧美精品一区二区蜜臀亚洲 | 免费进去里的视频 | 久久精品a | 国产精品乱码一区二区视频 | 国产一区高清在线 | 亚洲影院一区 | 中文字幕一区二区三区在线观看 | 国产成人1区 | 欧美久久久久久久久久久 | 久久久久欠精品国产毛片国产毛生 | 色资源中文字幕 | 高清中文字幕 | 久久久免费网站 | 黄色91在线| 色婷婷亚洲 | 日韩av综合网站 | 少妇av网 | 亚洲精品电影在线 | 欧美大码xxxx | 欧美精品做受xxx性少妇 | 丝袜美腿av | 成片人卡1卡2卡3手机免费看 | 精品国产一区二区三区久久久蜜臀 | 婷婷五综合 | 久久久久亚洲最大xxxx | 最近日本韩国中文字幕 | 中文字幕在线观看亚洲 | 精品久久久久久久久久国产 | 美女国产精品 | 日日夜夜狠狠干 | 国产中文字幕视频在线观看 | 超碰在线最新 | 麻豆精品国产传媒 | 最近中文字幕高清字幕免费mv | 在线中文字幕播放 | 中文字幕第一页在线 | 精品a视频| 一区二区三区四区久久 | 国产一级二级在线 | 国产黄av | 欧美成人xxxx | 欧美性色综合网 | 一区二区三区四区久久 | 久草在线观看视频免费 | 欧美福利网站 | 人人插超碰 | 在线观看中文字幕dvd播放 | 成人午夜电影在线播放 | 91精品久久久久久综合五月天 | 五月婷婷视频 | 99久久精品免费看国产四区 | 久久爽久久爽久久av东京爽 | 中日韩免费视频 | 一区二区不卡视频在线观看 | 亚洲成av人片在线观看无 | 狠狠的操| 一级淫片a| 久久精品伊人 | 色综合久久88色综合天天免费 | 亚洲专区路线二 | 五月天综合激情 | 天天干亚洲 | 久久精品久久久久 | av黄色免费网站 | wwwwww国产 | 人人玩人人爽 | 成人a在线观看高清电影 | 九九免费在线观看 | a成人v在线 | 狠狠88综合久久久久综合网 | 久久激情精品 | 超碰97国产 | 99热这里只有精品8 久久综合毛片 | 一级片视频在线 | 少妇bbw揉bbb欧美 | 国产精品美女久久久久久久久久久 | 日本护士三级少妇三级999 | 青青河边草免费观看完整版高清 | 亚洲电影免费 | 国产精品免费看久久久8精臀av | 久久久久免费精品国产 | 久久久久久久久久电影 | 不卡的av在线播放 | 国产精品色在线 | 国产高清精品在线 | 国产一区二区在线免费 | 国产成人精品999在线观看 | 久久久久久久久爱 | 一二三久久久 | 亚洲一区二区视频在线 | 国产亚洲精品美女 | 综合色播| 黄色国产在线 | 最新国产在线视频 | 丁香亚洲| 久久99精品一区二区三区三区 | 日韩精品一区二区三区水蜜桃 | 日韩大陆欧美高清视频区 | 国产成人av一区二区三区在线观看 | 国产精品久久久久高潮 | 在线免费观看的av网站 | 91视频国产高清 | 亚洲综合在线五月天 | 国产一区二区观看 | 天天天综合 | 91女神的呻吟细腰翘臀美女 | 久久精品这里精品 | 日韩美女黄色片 | 九月婷婷色 | 91爱爱免费观看 | 久久久精品福利视频 | 96亚洲精品久久 | 欧美极品久久 | 四月婷婷在线观看 | 狠狠久久| 青青河边草观看完整版高清 | 日韩免费看 | av在线收看 | 国产精品久久毛片 | 日本99久久 | 天天综合区 | 黄色大全免费网站 | 中文字幕国产一区二区 | 欧美日韩一区三区 | 国产精品久久久久久久久久久久午 | 狠狠久久综合 | 奇米网在线观看 | 久久久久久久99 | 亚洲国产精品小视频 | 91免费观看视频网站 | 婷婷在线综合 | 最新的av网站 | bbb搡bbb爽爽爽 | 最新av免费在线观看 | 国产手机在线观看视频 | 亚洲精品久久久蜜桃 | 国产一区欧美一区 | 日本系列中文字幕 | 精品资源在线 | 中文字幕2021| 99色人| 亚洲日b视频 | 热久久影视 | 国产永久免费高清在线观看视频 | 又黄又爽又刺激视频 | 国产精选在线 | 亚洲成人资源在线观看 | 欧美日韩精品在线一区二区 | 日韩电影一区二区三区在线观看 | 99在线精品免费视频九九视 | 久久久国产视频 | 91热爆在线观看 | 99 视频 高清 | 91在线麻豆 | 欧美日韩视频观看 | www.五月婷婷.com | 亚洲h色精品 | 中文av在线天堂 | av免费看在线 | 亚洲视频在线播放 | 免费黄色a网站 | 亚洲第一香蕉视频 | 六月婷婷色 | 91久久精品一区 | 96精品高清视频在线观看软件特色 | 五月天久久激情 | 亚洲午夜精品久久久久久久久久久久 | 在线免费黄| 91精品久久久久久久久久久久久 | 亚洲高清国产视频 | 韩日三级在线 | 国产精品国产亚洲精品看不卡 | 国产精品中文字幕在线播放 | 日韩特黄一级欧美毛片特黄 | 最新中文字幕在线资源 | 91成人国产 | 啪一啪在线 | 右手影院亚洲欧美 | 国产精品一区二区久久精品爱涩 | 久久激情五月丁香伊人 | 一区二区三区国 | 丁香六月激情 | 69视频网站| 午夜精品久久久久久久99水蜜桃 | 美女露久久 | 国产一线天在线观看 | 丁香花在线视频观看免费 | 99精品免费视频 | 国产一级电影网 | 91久久精| www.99久久.com| 国内三级在线观看 | 久久久久久久久免费 | 国产黄视频在线观看 | 狠狠久久综合 | 国产一区二区精 | 国产精品久久久亚洲 | 日韩在线免费视频观看 | 91精彩视频| 欧美精品午夜 | 亚洲精品福利在线 | 天天色天天综合 | 国产日韩视频在线观看 | 91在线在线观看 | 久久精品国产一区二区电影 | 国产一区在线精品 | 午夜精品久久久久久久99水蜜桃 | 亚洲精品国产自产拍在线观看 | 亚洲激情一区二区三区 | 91在线公开视频 | 久久精品中文字幕一区二区三区 | 激情视频综合网 | 97超碰资源总站 | 国产麻豆精品久久 | 久久夜夜夜 | 中文字幕 在线 一 二 | 欧美亚洲一区二区在线 | 99精品视频在线 | 国产免费观看视频 | 日韩字幕 | 日韩精品综合在线 | 99久久国产免费,99久久国产免费大片 | 国产免费又黄又爽 | 亚洲三级黄色 | 国产在线精品区 | 免费h视频| 综合网在线视频 | 亚洲视频免费在线 | 日韩中文字幕网站 | 日韩免费区 | 在线看毛片网站 | 狠狠操狠狠插 | 伊人天堂久久 | 国产精品麻豆果冻传媒在线播放 | 国产精品第一页在线观看 | 成年人在线看片 | 国偷自产中文字幕亚洲手机在线 | 日韩av电影手机在线观看 | 国产视频精品在线 | 在线91视频 | 在线成人国产 | 亚洲国产精品影院 | 日韩在线免费观看视频 | 国产精品av在线 | 久久精品国产亚洲aⅴ | 成人av在线影视 | av资源网在线播放 | 免费亚洲片 | 激情久久一区二区三区 | 国产成人a亚洲精品 | 中文字幕久久精品一区 | 青青河边草手机免费 | 99精品一级欧美片免费播放 | 91九色成人蝌蚪首页 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 国产明星视频三级a三级点| 97视频免费在线观看 | 99re国产| 97成人资源 | 国产一级片免费观看 | 国内精品视频在线 | 96视频在线 | 国产一级片免费视频 | 国产91全国探花系列在线播放 | 亚洲欧洲成人精品av97 | 中文字幕资源在线观看 | 91探花国产综合在线精品 | av在线播放免费 | 国产亚洲片 | 97爱爱爱| 久久久久国产精品视频 | 免费a视频在线 | 一级黄色片在线免费观看 | 综合五月 | 国产手机在线视频 | 深夜免费小视频 | 亚洲成人黄 | 98涩涩国产露脸精品国产网 | 日韩精品视频免费在线观看 | 欧美精品一二三 | 91亚洲在线| 久久精品日本啪啪涩涩 | 国产免费av一区二区三区 | 国产在线观看不卡 | 一区二区三区免费播放 | 国产成人a亚洲精品v | 国产一区精品在线观看 | 成人午夜av电影 | 欧洲精品在线视频 | 在线视频亚洲 | 一区二区三区国产欧美 | 久久99精品国产一区二区三区 | 欧美网站黄色 | 中国一区二区视频 | av九九九 | 人人插人人舔 | 天天操天天色综合 | 久久久久免费精品 | 亚洲九九影院 | 天天天干天天天操 | 成人福利在线播放 | 国内精品美女在线观看 | 国产在线播放一区二区 | 精品久久久久久久久久久久 | 久久精品久久精品久久精品 | 国产黄在线看 | 久久免费看av | 国产福利小视频在线 | 九热精品 | 国产精品久久久久一区 | 在线观看的黄色 | 午夜av电影 | 天天操天天射天天 | 亚洲涩涩网站 | 波多野结衣电影一区二区三区 | www.久久91 | 天天射天天干天天操 | 超级碰视频 | 天天爽人人爽 | www.777奇米| 色视频网页 | 在线观看国产亚洲 | 永久免费看av | 亚洲成人在线免费 | 久久久久久蜜桃一区二区 | 一区二区三区免费在线 | 一区二区三区中文字幕在线 | 日韩视频中文字幕在线观看 | 色婷婷播放 | 超碰在线人 | 欧美极品xxxx | 欧美激情精品久久久久久免费 | av免费观看网站 | 国产免费视频在线 | 黄色在线免费观看网址 | 国产美女视频免费观看的网站 | 国产精品毛片一区二区 | 一本一道久久a久久综合蜜桃 | 在线观看一级 | 午夜狠狠操 | av成人免费在线看 | 国产精品久久久久久久午夜片 | 一区二区三区视频在线 | 国产精品久久久久久久久久久久午夜 | 91理论电影| 日韩在线观看视频中文字幕 | 国产精品视频永久免费播放 | 日韩在线电影一区二区 | www.久久91| 九九九毛片 | 欧美日韩一级在线 | 91精品国产综合久久福利 | 色综合欧洲 | 婷婷色五| av电影在线观看完整版一区二区 | 婷婷色在线视频 | 国产尤物在线 | 97精产国品一二三产区在线 | 精品久久久久久亚洲综合网站 | 欧美另类xxxx | 欧美日韩免费在线视频 | 日韩av片无码一区二区不卡电影 | 免费又黄又爽的视频 | 亚洲天堂网站视频 | 亚洲三级视频 | 香蕉久久久久久久 | 天天伊人网 | 在线免费黄色av | 8x成人免费视频 | 蜜桃麻豆www久久囤产精品 | 一区二区不卡 | 激情五月婷婷综合 | 黄色一及电影 | 亚洲乱亚洲乱亚洲 | 国产99自拍| 不卡av在线 | 激情久久一区二区三区 | 黄色毛片一级片 | 天天翘av | 国产精品系列在线播放 | 久久综合成人 | 成人va在线观看 | 国产日本高清 | 亚洲精品资源在线观看 | 亚洲在线资源 | 国产精品午夜久久久久久99热 | 97免费在线观看 | 福利一区在线视频 | 免费69视频 | 久久久久久久久久毛片 | 黄色在线视频网址 | 国产专区视频在线观看 | 欧美日韩国产网站 | 国产精品久久久久影院 | 久久视了 | 亚洲精品视频在线 | 91久久精品一区 | 一区二区三区国产精品 | 亚洲欧洲精品一区 | 一区二区三区在线免费 | 欧美人交a欧美精品 | 我爱av激情网 | 免费在线国产 | 99久久婷婷| av中文在线| 成人中文字幕+乱码+中文字幕 | 久久精品国产免费看久久精品 | 欧美性春潮 | 久久视频6 | 国产在线播放一区二区三区 | 日本中文在线观看 | 亚洲高清视频在线播放 | 亚洲精品456在线播放乱码 | 久久久香蕉视频 | 久久精品国产成人精品 | 色www精品视频在线观看 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 91免费视频黄 | 天天干天天干天天干 | 91伊人| 欧美性生活大片 | 欧美成人猛片 | 国产永久免费观看 | 欧美日韩在线观看不卡 | 在线а√天堂中文官网 | 手机av片| 91黄色成人| 亚州精品在线视频 | 色一级片 | 日韩在线视频免费看 | 999久久久久久久久久久 | 国产在线超碰 | 国产精品福利在线观看 | 欧美色一色 | 在线a人v观看视频 | 黄色网免费 | 婷婷亚洲五月 | 精品伦理一区二区三区 | 韩日精品中文字幕 | 国内三级在线观看 | 亚洲黑丝少妇 | 97狠狠操 | 日韩精品一区二区三区免费视频观看 | 国产精品美女久久久久久久久久久 | 69国产盗摄一区二区三区五区 | 黄污视频网站大全 | 一本一本久久aa综合精品 | 日韩欧美视频在线免费观看 | 91少妇精拍在线播放 | 精品视频123区在线观看 | 久久热亚洲 | 国产成人一区二区三区免费看 | 99久久精品国产亚洲 | 狠狠的操你 | 久久色视频 | 欧美天堂影院 | 99999精品视频| 天天久久夜夜 | 日本h在线播放 | 婷婷九月丁香 | 一区二区三区播放 | 天天曰天天曰 | 丝袜少妇在线 | 久久影院亚洲 | 免费男女羞羞的视频网站中文字幕 | 中文字幕日韩免费视频 | 91在线免费视频 | 久久人人爽人人爽人人片av免费 | 亚洲成av人电影 | 国产在线播放一区二区三区 | h网站免费在线观看 | 久久99精品波多结衣一区 | 欧美国产日韩在线观看 | 狠狠亚洲 | 国产一区免费 | 欧美激情第十页 | 亚洲精品视频网 | 免费看黄在线看 | 国产精品日韩久久久久 | 夜夜躁日日躁狠狠久久av | 欧美另类tv| 97在线观看免费高清完整版在线观看 | 麻豆高清免费国产一区 | 日韩免费在线网站 | 五月花丁香婷婷 | 毛片基地黄久久久久久天堂 | 亚洲一级免费观看 | 日本视频网 | 青青久草在线视频 | 国产精品久久久久久久久久久不卡 | 欧美日韩精品综合 | 日韩久久精品一区二区 | 久久精品视频免费 | 久久中国精品 | 国产色秀视频 | 日韩国产高清在线 | 丁香婷婷综合激情五月色 | 国产伦精品一区二区三区无广告 | 五月婷婷免费 | 天天草天天干天天射 | 天天综合网 天天综合色 | 天天草天天 | www黄色大片 | 欧美一级黄色视屏 | 久久看毛片 | 黄色免费大全 | 美女视频免费一区二区 | 黄色a一级片 | 综合av在线 | 欧美 日韩 国产 中文字幕 | 成年人在线电影 | 久久9精品 | 国产精品午夜在线观看 | 东方av在 | 免费看日韩片 | 99在线看 | 黄色小说免费观看 | 一本色道久久精品 | 黄色大片中国 | 欧美激情视频一二三区 | 国产伦理剧 | 欧美精品亚洲精品日韩精品 | 99在线视频免费观看 | 欧美专区国产专区 | 波多野结衣在线观看视频 | 国产香蕉97碰碰碰视频在线观看 | 色婷婷狠狠18 | 国产精品免费久久久久久久久久中文 | 国产人成免费视频 | 五月激情片| 99久久er热在这里只有精品15 | 亚洲成人网在线 | 国产麻豆精品一区 | 免费看国产一级片 | 日本中出在线观看 | 超碰97免费观看 | 日韩av一区二区三区 | 外国av网 | 久久另类小说 | 国产精品久久久久久影院 | 99激情网 | 天堂av免费 | 久久久久久国产精品亚洲78 | 麻豆视频在线观看免费 | 欧美国产一区二区 | 久久精品亚洲精品国产欧美 | 十八岁以下禁止观看的1000个网站 | 免费福利视频网站 | 又黄又爽免费视频 | 精品一区精品二区高清 | 午夜男人影院 | 欧美在线不卡一区 | 中文字幕亚洲欧美 | 国产亚洲va综合人人澡精品 | www.黄色片网站 | 亚洲精品美女久久17c | 婷婷伊人网 | 国产99久久久国产 | 国产色综合天天综合网 | 国产福利精品一区二区 | 久久国产午夜精品理论片最新版本 | 国产va在线 | 国产精品理论片 | 黄色三级免费看 | 日韩欧美高清在线 | 伊人国产女 | 六月丁香婷 | 国产精品原创 | 欧美性色综合网站 | 91香蕉国产在线观看软件 | 天天干.com | 嫩草av在线| 四虎国产永久在线精品 | 中文字幕在线一区二区三区 | 97视频久久久 | av再线观看 | 色在线网| 国产精品一区二区三区四 | 黄色小视频在线观看免费 | 成人一级黄色片 | 日韩网站一区 | 成人免费看电影 | 成人a级网站 | 国产精品美女久久久免费 | 9999亚洲 | 久久黄色成人 | 精品免费一区二区三区 | 在线免费中文字幕 | ww视频在线观看 | 成人黄色电影在线播放 | 国产免费片 | 香蕉视频导航 | 日韩在线播放av | 婷婷在线综合 | 欧美午夜a| 91精品国产乱码久久桃 | 久久精品国产精品 | 亚洲成成品网站 | 成人在线电影观看 | 在线免费91 | 色网站在线观看 | 亚洲免费国产视频 | 欧美精品国产综合久久 | 成人资源站 | 一级淫片在线观看 | 欧美日韩国产在线一区 | 亚洲六月丁香色婷婷综合久久 | 91免费视频网站在线观看 | 人人添人人澡人人澡人人人爽 | 精品一二三四在线 | 伊人久久在线观看 | 91刺激视频| 国产视频一区二区在线观看 | 国产精品久久久久久久久蜜臀 | 天天操综合网站 | 韩国一区二区在线观看 | 欧美整片sss | 国产在线播放不卡 | 最近最新最好看中文视频 | 国产精品视频久久久 | 日韩三级视频在线看 | 永久免费av在线播放 | 国产精品中文字幕av | 日本最新高清不卡中文字幕 | 欧美日韩在线观看一区二区 | 一区二区三区在线不卡 | 国产福利不卡视频 | 在线观看视频福利 | 玖玖玖影院 | 色综合五月| 91免费国产在线观看 | 免费看日韩片 | 极品国产91在线网站 | 久要激情网 | 999久久久| 人人澡人人爽欧一区 | 国产精品久久久久久久免费 | 久久69精品久久久久久久电影好 | 免费日韩 精品中文字幕视频在线 | 97碰碰精品嫩模在线播放 | 99精品在线免费 | 国产美女久久久 | 综合久久婷婷 | 中文字幕日韩伦理 | 亚洲精品在线免费 | 天天干天天操天天入 | 天天干天天操天天搞 | 久久爽久久爽久久av东京爽 | 久久久免费观看完整版 | 久久久久免费电影 | 婷婷在线精品视频 | 日韩在线视频网址 | 久久久久久久久久亚洲精品 | 久久草网 | 国产国产人免费人成免费视频 | 黄色在线免费观看网址 | 国产高清免费观看 | 涩涩网站免费 | 国产高清久久 | 久久看免费视频 | 欧美性生活一级片 | 亚洲国产日韩在线 | 伊人影院得得 | 日韩三级精品 | 日韩在线免费不卡 | 视频三区 | 日韩av中文字幕在线 | 91av精品 | 日韩欧美精品一区二区 | av观看网站 | 17videosex性欧美 | 92中文资源在线 | 国产91在线观看 | 久久国产亚洲视频 | 美女啪啪图片 | 欧美一级电影免费观看 | 国产日韩精品一区二区在线观看播放 | 久久午夜电影院 | 又长又大又黑又粗欧美 | 亚洲第一伊人 | 日韩一区正在播放 | 99中文字幕 | 国产精品美女久久久久久网站 | 成人av中文字幕在线观看 | 日韩xxx视频| 九九色在线观看 | 久久综合五月婷婷 | 国产一区二区在线视频观看 | 综合久久综合久久 | 日韩欧美精品在线 | 日韩精品中文字幕在线播放 | 欧美精品被 | 亚洲天堂社区 | 亚洲九九影院 | 久久激情五月激情 | 波多野结衣网址 | 久久久久国产精品免费网站 | 国产福利91精品 | 手机看片国产日韩 | 国产精品永久免费观看 | 午夜三级毛片 | av一区二区三区在线 | 91看片在线播放 | 国产99精品 | 久久精品波多野结衣 | 国产高清中文字幕 | 午夜体验区| 国内一级片在线观看 | 中文字幕免费在线看 | 中文字幕精品一区 | 亚洲国产成人久久综合 | 国产h在线播放 | 欧美午夜视频在线 | 久久免费视频8 | 亚洲精品视频在线免费播放 | 午夜久久福利 | 婷婷六月天丁香 | 日韩av电影手机在线观看 | 国产一区自拍视频 | 日韩欧美精品在线 | a'aaa级片在线观看 | 深夜免费福利在线 | 午夜精品久久久久久中宇69 | 亚洲一级电影在线观看 | 四虎5151久久欧美毛片 | 天堂网中文在线 | 激情综合五月婷婷 | 国产精品丝袜在线 | 久久成年人网站 | 九九爱免费视频在线观看 | 毛片无卡免费无播放器 | 97福利在线 | 精品1区2区| 六月婷婷网 | 一二三精品视频 | 欧美在线视频一区二区三区 | 日批网站在线观看 | 天天干天天干天天射 | 99精品小视频 | 国产精品1区 | 九色视频网站 | 婷婷久久精品 | 一区二区影视 | 国产精品大片免费观看 | 亚洲 欧洲av | 午夜影院一区 | 亚洲欧美激情精品一区二区 | 日p在线观看 | 亚洲一级片 | 中文字幕 国产视频 | 中文字幕永久在线 | 最近最新mv字幕免费观看 | 欧美日韩视频一区二区三区 | 特级西西444www高清大视频 | 91av手机在线观看 | www.com黄色| 日韩久久精品一区二区 | 天天躁日日躁狠狠躁av麻豆 | 国产黄色美女 | 国产黄免费在线观看 | 97超碰超碰久久福利超碰 | 丝袜网站在线观看 | 久久久精品免费观看 | 69精品| 99精品99 | 久草91视频 | 香蕉视频18| 麻豆国产网站入口 | 爱爱av在线 | 国产一性一爱一乱一交 | 精品国产1区2区 | 国产精品9区 | 亚洲黄色网络 | 欧美综合干 | 久二影院| 欧美韩国日本在线观看 | av蜜桃在线| 国产第一页在线观看 | 亚洲va欧洲va国产va不卡 | 国产成人福利片 | 国产视频不卡一区 | 天天躁天天狠天天透 | 97超碰人人模人人人爽人人爱 | 久草视频在线免费看 | 中文字幕你懂的 | 中文字幕亚洲欧美日韩2019 | 香蕉网在线 | 午夜国产一区 | 超碰97人人射妻 | 99久久国产免费看 | 国产a国产a国产a | 久久精品系列 | 一区二区三区久久精品 | www五月 | www国产在线 | 激情中文在线 | 三级免费黄色 | 粉嫩一二三区 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 欧美激情另类 | 久久艹在线观看 | 日本黄色一级电影 | 一区二区 不卡 | 狠狠干2018| 一级一片免费看 | 国产美女搞久久 | 成人免费观看在线视频 | 成人av视屏| 天天在线操 | 少妇高潮流白浆在线观看 | 毛片永久免费 | 日韩精品大片 | 久久综合中文色婷婷 | 在线看国产视频 | 亚洲视频2 | 五月婷综合| 天天鲁天天干天天射 | 中文字幕免费一区二区 | 六月激情网 | 91在线porny国产在线看 | av一级网站| av中文在线 | 在线观看视频在线观看 | 成人福利在线播放 | 欧美成亚洲 | 久久久免费视频播放 | 特级西西444www高清大视频 | 久久久影片 | 天天干夜夜爱 | 久久在线免费视频 | 亚洲精品小视频 | 国产精品一区二区三区四区在线观看 | 精品xxx| 国产中文欧美日韩在线 | 日韩免费播放 | 91一区啪爱嗯打偷拍欧美 | 九九有精品 | 91亚洲精品在线 | 久久久久免费视频 | 国产在线一卡 | 伊人色综合网 | 二区视频在线观看 | 亚洲在线网址 | 亚洲黄色影院 | 在线观看电影av | 国产免费观看高清完整版 | 久久99精品国产99久久 | 五月天天天操 | 久久久精品国产一区二区三区 | 欧美特一级| 国产成人精品国内自产拍免费看 | 国产精品久久中文字幕 | 国产成人精品免高潮在线观看 | 国产日产精品一区二区三区四区的观看方式 | 欧美激情视频在线观看免费 | 欧美大片在线看免费观看 | 涩涩爱夜夜爱 | 久久人人艹 | 精品久久网站 | 夜夜摸夜夜爽 | 精品嫩模福利一区二区蜜臀 | 日韩激情网 | 亚洲精品视频在线观看免费视频 | 亚洲激情在线 | 国产成人久久精品亚洲 | 欧美精品久久久久久 | 在线免费高清一区二区三区 | 日韩免费电影网站 | 亚洲一级黄色av | 免费亚洲黄色 | 欧美久久久一区二区三区 | 911精品视频 | 日本激情视频中文字幕 | 亚洲日日射| 亚洲男男gaygayxxxgv| 在线观看中文字幕av | 亚洲在线视频观看 | 色视频网址 | 亚洲天天综合网 | 免费看的国产视频网站 | 国产高清不卡一区二区三区 | 午夜av在线 | 天天爱综合 | 成人一级片视频 | 成年人在线播放视频 | 九九有精品 | 欧美性色综合网 | 国产高清 不卡 | 99久久超碰中文字幕伊人 | 国产精品6999成人免费视频 | 天天综合天天综合 | 97超碰中文字幕 | 最近中文字幕免费 | 激情电影影院 | 国产传媒一区在线 | 久久国产区 | 久久精品婷婷 | 操操综合 | 福利一区二区在线 | 欧美性色综合网 | 国产一区二区电影在线观看 | 一级a性色生活片久久毛片波多野 | 欧美日本不卡高清 | 久久9视频 | 色综合久久中文字幕综合网 | 国产精品亚州 | 91视频在线播放视频 | 亚洲精品欧美成人 | 午夜视频在线观看欧美 | 国产日产欧美在线观看 | 久久久久久久久久网 | 亚洲天堂网在线视频观看 | 99久久日韩精品免费热麻豆美女 | 在线观看免费高清视频大全追剧 | 久久免费视频在线观看6 | 免费色黄 | 久久激情视频 | 国产伦精品一区二区三区在线 | 四虎伊人 | 韩日精品视频 | 亚洲区精品 | 日韩在线高清免费视频 | 国产又粗又猛又爽 | 久久99国产精品久久99 | 99久久超碰中文字幕伊人 | 日韩国产精品久久 | 欧美a级一区二区 | 天天射天天干 | 亚洲国产精彩中文乱码av | 久草在线这里只有精品 | 久久久久久毛片 | 日韩色区 | 九九视频网站 | 日韩精品视 | 免费h漫在线观看 | 欧美视频在线观看免费网址 | 人人添人人| 黄色国产区 | 黄色软件在线观看视频 |