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

利用Swashbuckle生成Web API Help Pages

開發 開發工具
Swashbuckle有兩個核心組件:Swashbuckle.SwaggerGen: 提供生成描述對象,方法,返回類型等JSON Swagger文檔的功能。Swashbuckle.SwaggerUI: 一個Swagger UI工具的嵌入式版本,可以使用上面的文檔來創建可定制化的Web API的功能描述,包含內置的公共方法的測試工具。

[[189063]]

Swashbuckle簡介

Swashbuckle有兩個核心組件:

  • Swashbuckle.SwaggerGen: 提供生成描述對象,方法,返回類型等JSON Swagger文檔的功能。
  • Swashbuckle.SwaggerUI: 一個Swagger UI工具的嵌入式版本,可以使用上面的文檔來創建可定制化的Web API的功能描述,包含內置的公共方法的測試工具。

在middleware中添加并配置Swagger

首先,要將Swashbuckle添加到項目中的project.json:

  1. "Swashbuckle""6.0.0-beta902" 

然后在Configure方法中添加SwaggerGen到services集合中,接著在ConfigureServices方法中,允許中間件(middleware)為生成的JSON文檔和SwaggerUI提供服務。

執行dotnet run命令,并導航到http://localhost:5000/swagger/v1/swagger.json 查看描述終結點的文檔。

  1. 在middleware中添加并配置Swagger 
  2. 首先,要將Swashbuckle添加到項目中的project.json: 
  3.  
  4. "Swashbuckle""6.0.0-beta902" 
  5. 然后在Configure方法中添加SwaggerGen到services集合中,接著在ConfigureServices方法中,允許中間件(middleware)為生成的JSON文檔和SwaggerUI提供服務。 
  6.  
  7.  
  8.  
  9. 執行dotnet run命令,并導航到http://localhost:5000/swagger/v1/swagger.json 查看描述終結點的文檔。 
  10.  
  11.   "swagger""2.0"
  12.   "info": { 
  13.     "version""v1"
  14.     "title""API V1" 
  15.   }, 
  16.   "basePath""/"
  17.   "paths": { 
  18.     "/api/User": { 
  19.       "get": { 
  20.         "tags": [ 
  21.           "User" 
  22.         ], 
  23.         "operationId""ApiUserGet"
  24.         "consumes": [], 
  25.         "produces": [ 
  26.           "text/plain"
  27.           "application/json"
  28.           "text/json" 
  29.         ], 
  30.         "responses": { 
  31.           "200": { 
  32.             "description""Success"
  33.             "schema": { 
  34.               "type""array"
  35.               "items": { 
  36.                 "$ref""#/definitions/UserItem" 
  37.               } 
  38.             } 
  39.           } 
  40.         }, 
  41.         "deprecated"false 
  42.       }, 
  43.       "post": { 
  44.         "tags": [ 
  45.           "User" 
  46.         ], 
  47.         "operationId""ApiUserPost"
  48.         "consumes": [ 
  49.           "application/json"
  50.           "text/json"
  51.           "application/json-patch+json" 
  52.         ], 
  53.         "produces": [], 
  54.         "parameters": [ 
  55.           { 
  56.             "name""item"
  57.             "in""body"
  58.             "required"false
  59.             "schema": { 
  60.               "$ref""#/definitions/UserItem" 
  61.             } 
  62.           } 
  63.         ], 
  64.         "responses": { 
  65.           "200": { 
  66.             "description""Success" 
  67.           } 
  68.         }, 
  69.         "deprecated"false 
  70.       } 
  71.     }, 
  72.     "/api/User/{id}": { 
  73.       "get": { 
  74.         "tags": [ 
  75.           "User" 
  76.         ], 
  77.         "operationId""ApiUserByIdGet"
  78.         "consumes": [], 
  79.         "produces": [], 
  80.         "parameters": [ 
  81.           { 
  82.             "name""id"
  83.             "in""path"
  84.             "required"true
  85.             "type""string" 
  86.           } 
  87.         ], 
  88.         "responses": { 
  89.           "200": { 
  90.             "description""Success" 
  91.           } 
  92.         }, 
  93.         "deprecated"false 
  94.       }, 
  95.       "put": { 
  96.         "tags": [ 
  97.           "User" 
  98.         ], 
  99.         "operationId""ApiUserByIdPut"
  100.         "consumes": [ 
  101.           "application/json"
  102.           "text/json"
  103.           "application/json-patch+json" 
  104.         ], 
  105.         "produces": [], 
  106.         "parameters": [ 
  107.           { 
  108.             "name""id"
  109.             "in""path"
  110.             "required"true
  111.             "type""string" 
  112.           }, 
  113.           { 
  114.             "name""item"
  115.             "in""body"
  116.             "required"false
  117.             "schema": { 
  118.               "$ref""#/definitions/UserItem" 
  119.             } 
  120.           } 
  121.         ], 
  122.         "responses": { 
  123.           "200": { 
  124.             "description""Success" 
  125.           } 
  126.         }, 
  127.         "deprecated"false 
  128.       }, 
  129.       "delete": { 
  130.         "tags": [ 
  131.           "User" 
  132.         ], 
  133.         "operationId""ApiUserByIdDelete"
  134.         "consumes": [], 
  135.         "produces": [], 
  136.         "parameters": [ 
  137.           { 
  138.             "name""id"
  139.             "in""path"
  140.             "required"true
  141.             "type""string" 
  142.           } 
  143.         ], 
  144.         "responses": { 
  145.           "200": { 
  146.             "description""Success" 
  147.           } 
  148.         }, 
  149.         "deprecated"false 
  150.       }, 
  151.       "patch": { 
  152.         "tags": [ 
  153.           "User" 
  154.         ], 
  155.         "operationId""ApiUserByIdPatch"
  156.         "consumes": [ 
  157.           "application/json"
  158.           "text/json"
  159.           "application/json-patch+json" 
  160.         ], 
  161.         "produces": [], 
  162.         "parameters": [ 
  163.           { 
  164.             "name""item"
  165.             "in""body"
  166.             "required"false
  167.             "schema": { 
  168.               "$ref""#/definitions/UserItem" 
  169.             } 
  170.           }, 
  171.           { 
  172.             "name""id"
  173.             "in""path"
  174.             "required"true
  175.             "type""string" 
  176.           } 
  177.         ], 
  178.         "responses": { 
  179.           "200": { 
  180.             "description""Success" 
  181.           } 
  182.         }, 
  183.         "deprecated"false 
  184.       } 
  185.     }, 
  186.     "/api/Values": { 
  187.       "get": { 
  188.         "tags": [ 
  189.           "Values" 
  190.         ], 
  191.         "operationId""ApiValuesGet"
  192.         "consumes": [], 
  193.         "produces": [ 
  194.           "text/plain"
  195.           "application/json"
  196.           "text/json" 
  197.         ], 
  198.         "responses": { 
  199.           "200": { 
  200.             "description""Success"
  201.             "schema": { 
  202.               "type""array"
  203.               "items": { 
  204.                 "type""string" 
  205.               } 
  206.             } 
  207.           } 
  208.         }, 
  209.         "deprecated"false 
  210.       }, 
  211.       "post": { 
  212.         "tags": [ 
  213.           "Values" 
  214.         ], 
  215.         "operationId""ApiValuesPost"
  216.         "consumes": [ 
  217.           "application/json"
  218.           "text/json"
  219.           "application/json-patch+json" 
  220.         ], 
  221.         "produces": [], 
  222.         "parameters": [ 
  223.           { 
  224.             "name""value"
  225.             "in""body"
  226.             "required"false
  227.             "schema": { 
  228.               "type""string" 
  229.             } 
  230.           } 
  231.         ], 
  232.         "responses": { 
  233.           "200": { 
  234.             "description""Success" 
  235.           } 
  236.         }, 
  237.         "deprecated"false 
  238.       } 
  239.     }, 
  240.     "/api/Values/{id}": { 
  241.       "get": { 
  242.         "tags": [ 
  243.           "Values" 
  244.         ], 
  245.         "operationId""ApiValuesByIdGet"
  246.         "consumes": [], 
  247.         "produces": [ 
  248.           "text/plain"
  249.           "application/json"
  250.           "text/json" 
  251.         ], 
  252.         "parameters": [ 
  253.           { 
  254.             "name""id"
  255.             "in""path"
  256.             "required"true
  257.             "type""integer"
  258.             "format""int32" 
  259.           } 
  260.         ], 
  261.         "responses": { 
  262.           "200": { 
  263.             "description""Success"
  264.             "schema": { 
  265.               "type""string" 
  266.             } 
  267.           } 
  268.         }, 
  269.         "deprecated"false 
  270.       }, 
  271.       "put": { 
  272.         "tags": [ 
  273.           "Values" 
  274.         ], 
  275.         "operationId""ApiValuesByIdPut"
  276.         "consumes": [ 
  277.           "application/json"
  278.           "text/json"
  279.           "application/json-patch+json" 
  280.         ], 
  281.         "produces": [], 
  282.         "parameters": [ 
  283.           { 
  284.             "name""id"
  285.             "in""path"
  286.             "required"true
  287.             "type""integer"
  288.             "format""int32" 
  289.           }, 
  290.           { 
  291.             "name""value"
  292.             "in""body"
  293.             "required"false
  294.             "schema": { 
  295.               "type""string" 
  296.             } 
  297.           } 
  298.         ], 
  299.         "responses": { 
  300.           "200": { 
  301.             "description""Success" 
  302.           } 
  303.         }, 
  304.         "deprecated"false 
  305.       }, 
  306.       "delete": { 
  307.         "tags": [ 
  308.           "Values" 
  309.         ], 
  310.         "operationId""ApiValuesByIdDelete"
  311.         "consumes": [], 
  312.         "produces": [], 
  313.         "parameters": [ 
  314.           { 
  315.             "name""id"
  316.             "in""path"
  317.             "required"true
  318.             "type""integer"
  319.             "format""int32" 
  320.           } 
  321.         ], 
  322.         "responses": { 
  323.           "200": { 
  324.             "description""Success" 
  325.           } 
  326.         }, 
  327.         "deprecated"false 
  328.       } 
  329.     } 
  330.   }, 
  331.   "definitions": { 
  332.     "UserItem": { 
  333.       "type""object"
  334.       "properties": { 
  335.         "key": { 
  336.           "type""string" 
  337.         }, 
  338.         "name": { 
  339.           "type""string" 
  340.         }, 
  341.         "age": { 
  342.           "format""int32"
  343.           "type""integer" 
  344.         } 
  345.       } 
  346.     } 
  347.   }, 
  348.   "securityDefinitions": {} 

該文檔用來驅動Swagger UI,可以導航http://localhost:5000/swagger/ui來查看Swagger UI。

 

在UserController里面的每個方法都可以在該頁面上通過點擊”Try it out!”進行測試。

定制&擴展

API描述信息

  1. services.ConfigureSwaggerGen(options => 
  2.     options.SingleApiVersion(new Info 
  3.     { 
  4.         Version = "v1"
  5.         Title = "User Web API"
  6.         Description = "ASP.NET Core Web API"
  7.         TermsOfService = "None"
  8.         Contact = new Contact { Name = "Charlie Chu", Email = "charlie.thinker@aliyun.com", Url = "http://zhuchenglin.me/" }, 
  9.         License = new License { Name = "The MIT License", Url = "http://zhuchenglin.me/" } 
  10.     }); 
  11. }); 

XML注釋

通過在project.json添加“xmlDoc”: true來啟用XML注釋。

ApplicationBasePath獲取該應用的根路徑,它必須為XML注釋設置一個完整的路徑,生成的XML注釋名稱基于你的應用程序的名稱。

注意這個界面是通過之前生成的JSON文件來驅動的,所有的這些API描述信息和XML注釋都會寫入到這個文件中。

【本文為51CTO專欄作者“朱成林”的原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2024-10-17 16:12:08

2025-08-12 02:11:00

2024-04-28 18:28:12

API文檔生成工具開發Web API

2011-04-15 09:20:56

ASP.NET MVC

2011-12-23 09:28:31

Java

2009-04-13 11:38:27

IBMdWWeb

2023-07-26 17:13:38

2009-06-15 15:43:54

Stripes實現Ja

2011-10-27 16:24:48

API

2011-09-16 14:21:47

Web API

2020-11-04 13:18:34

WebAPIWeb Share A

2016-10-18 10:23:14

Docker容器SSL證書

2019-11-13 11:52:46

區塊鏈API比特幣

2014-08-12 10:28:08

AngularJS外部API

2009-06-23 16:52:16

JSFHibernateWeb應用

2010-09-15 12:15:23

NessusWEB應用安全掃描

2017-02-14 21:15:48

2011-01-20 10:17:25

ibmdwWeb

2012-04-25 11:21:41

Visual Stud

2024-07-22 17:21:05

點贊
收藏

51CTO技術棧公眾號

一区二区三区小说| 国产一区白浆| 91精品国产日韩91久久久久久| 久久av喷吹av高潮av| www.天天干.com| 国产精品一卡| 久久精品国产欧美激情| 艳妇乳肉豪妇荡乳xxx| sis001欧美| 亚洲欧洲www| 精品产品国产在线不卡| 中日精品一色哟哟| 亚洲激情不卡| 日韩亚洲国产中文字幕| 善良的小姨在线| jk漫画禁漫成人入口| 亚洲精品水蜜桃| 日本黑人久久| 丰满人妻一区二区三区免费| 日本最新不卡在线| 性视频1819p久久| 91大神福利视频| 九九精品在线| 亚洲福利在线视频| 五月激情五月婷婷| 成人免费短视频| 一区二区不卡在线播放| 亚洲电影免费| 日本韩国一区| 国产69精品久久久久毛片| 国产精品视频永久免费播放 | 亚州精品国产| 色综合久久久久久久久| 蜜臀av色欲a片无码精品一区| 日本暖暖在线视频| 日本免费中文字幕在线| 久久精品av麻豆的观看方式| 91国自产精品中文字幕亚洲| 免费在线观看一级片| 三区四区不卡| 夜夜嗨av色综合久久久综合网| 亚洲综合自拍网| 综合伊人久久| 日韩欧美专区在线| 国产探花一区二区三区| 四虎精品一区二区免费| 欧美视频在线播放| 欧美精品性生活| 一级毛片久久久| 精品国产鲁一鲁一区二区张丽| 国产欧美精品aaaaaa片| 国产成人高清精品| 国产精品不卡视频| 亚洲一区二区三区精品动漫| www.亚洲.com| 中文字幕成人网| 日韩欧美在线电影| yourporn在线观看中文站| 丝袜连裤袜欧美激情日韩| 中文字幕一区不卡| 日本黄色播放器| 麻豆传媒视频在线| 亚洲欧洲无码一区二区三区| 中文字幕一区二区三区四区五区| 在线观看a视频| 国产精品蜜臀av| 中文字幕第一页亚洲| 在线观看三级视频| 玉足女爽爽91| 美女黄色免费看| jizzjizz中国精品麻豆| 午夜日韩在线观看| 亚洲国产精品久久久久爰色欲| 成人性生活视频| 91久久精品一区二区三| 美女在线视频一区二区| 国产一区二区三区视频在线| 激情综合网av| 91九色最新地址| 日韩久久一级片| 日韩中文视频| 制服.丝袜.亚洲.中文.综合| 可以看的av网址| 欧美五码在线| 中文字幕在线成人| 午夜剧场免费在线观看| 亚洲电影在线| 国产精品视频免费在线| www.国产三级| 91丨九色丨国产丨porny| 日韩欧美一区二区三区四区| 菠萝菠萝蜜在线视频免费观看| 亚洲一区二区免费视频| 超碰97人人射妻| 日韩美女在线| 亚洲国产精品va| 男人舔女人下部高潮全视频| 一区二区电影在线观看| 欧美一级黑人aaaaaaa做受| 这里只有精品国产| 岛国精品一区二区| 亚洲黄色成人久久久| 午夜成年人在线免费视频| 色先锋资源久久综合| 三级性生活视频| 免费成人av| 欧美伦理91i| 日本成人一级片| 国产91在线看| 在线观看免费91| 黄毛片在线观看| 欧美一区二区视频观看视频| 91在线视频成人| 国产性一乱一性一伧一色| 日本亚洲天堂网| 国产精品乱子乱xxxx| av在线第一页| 精品福利视频导航| 日本黄色一级网站| 精品国产一区二区三区小蝌蚪| 欧美国产激情18| 亚洲资源在线播放| 2024国产精品| 日韩精品一区二区免费| 欧美激情啪啪| 亚洲色图在线观看| 日韩欧美一级视频| 国产伦精品一区二区三区免费迷| 色噜噜狠狠一区二区三区| www.超碰在线| 日韩精品一区二区三区老鸭窝 | av日韩一区二区三区| 久久人体av| 国产亚洲精品va在线观看| www.国产高清| 成人av资源网站| 97av中文字幕| 豆花视频一区| 精品国产欧美一区二区三区成人| 国产又粗又猛又爽又| 久久综合九色欧美综合狠狠 | 久久久久久久久久久一区| 一区二区三区伦理| 日韩一区二区免费在线观看| 国产免费一区二区三区四区| 日韩av一区二区三区| 欧洲精品在线一区| 丝袜美腿诱惑一区二区三区| 国产视频亚洲精品| 天码人妻一区二区三区在线看| 9人人澡人人爽人人精品| cao在线观看| 成年人在线免费看片| 少妇精品在线| 欧美夫妻性生活xx| av一区二区三| 一区二区三区高清在线| 性一交一黄一片| 欧美色123| 成人动漫在线观看视频| 超碰在线网站| 精品视频在线导航| 亚洲欧美一二三区| 中文字幕高清一区| 日本一二三区在线| 欧美国产三级| 黑人巨大精品欧美一区二区小视频| hd国产人妖ts另类视频| 亚洲国产精品一区二区久| 国产成人精品片| 久久久久久久性| 在线观看国产一级片| 小小影院久久| 国产精品久久久久久久久久直播 | 欧美一区二区三区精品电影| 同心难改在线观看| 欧美中文字幕一区二区三区亚洲| 国产免费嫩草影院| 韩国女主播成人在线观看| 国产精品日韩三级| 亚洲人成网亚洲欧洲无码| 国产经典一区二区| 黄网页免费在线观看| 精品日韩成人av| 久久中文字幕免费| 中文字幕欧美区| 中文字幕avav| 久久久久国产精品一区三寸| 一个色的综合| 精品欠久久久中文字幕加勒比| 热门国产精品亚洲第一区在线| 99中文字幕一区| 欧美哺乳videos| 尤物视频免费观看| 亚洲美女在线一区| 国产中年熟女高潮大集合| 国产在线精品免费| 色综合av综合无码综合网站| 99久久www免费| 精品视频高清无人区区二区三区| 久久99国产精品二区高清软件| 欧美午夜不卡影院在线观看完整版免费| 国产日韩av在线播放| 大香伊人中文字幕精品| 亚洲一区第一页| 国产wwwwwww| 在线观看视频一区二区欧美日韩| 99视频只有精品| 91麻豆免费观看| 中文国产在线观看| 久久婷婷亚洲| 日韩久久久久久久久久久久| 波多野结衣在线播放一区| 国产精品久久精品视| 亚洲午夜国产成人| 国产激情久久久| caoporn视频在线观看| 日韩在线不卡视频| 黄色av网址在线免费观看| 欧美精品一区二区高清在线观看| 亚洲综合精品视频| 日韩欧美在线观看视频| 久久这里只有精品国产| 自拍偷拍亚洲综合| 免费视频91蜜桃| 久久一二三国产| 特级西西人体wwwww| 久久国产剧场电影| 极品美女扒开粉嫩小泬| 欧美成人亚洲| 一区二区不卡视频| 波多野结衣在线观看一区二区三区| 国产一区福利视频| 国产二级一片内射视频播放| 亚洲免费高清| 日韩极品视频在线观看| 欧美在线精品一区| 性欧美18一19内谢| 国产精品久久久久一区二区三区厕所| 神马影院我不卡午夜| 伊人春色精品| 日本免费高清一区| 啪啪亚洲精品| 麻豆91蜜桃| 真实原创一区二区影院| 久久精品午夜一区二区福利| 大香伊人久久精品一区二区 | 免费无码不卡视频在线观看| 激情久久综合| www.射射射| 一区二区三区导航| 日本xxxxxxx免费视频| 亚洲欧美卡通另类91av| 免费在线激情视频| 久热精品视频| 91制片厂毛片| 亚洲麻豆精品| 精品对白一区国产伦| 高潮毛片7777777毛片| 亚洲精品在线观看视频| 午夜视频www| 亚洲精品视频在线播放| 国产三级在线免费| 色噜噜狠狠狠综合曰曰曰| 男人的天堂在线视频免费观看| 久久精品久久久久电影| 怡红院在线播放| 国内伊人久久久久久网站视频| 888av在线视频| 欧美一区二区三区精品电影| 亚洲电影有码| 91久久嫩草影院一区二区| 美女精品视频在线| 国产日韩精品一区观看| 人人网欧美视频| 亚洲精品一区二| 欧美va天堂在线| 免费在线激情视频| 日本中文字幕不卡| 午夜一级免费视频| 丁香婷婷深情五月亚洲| 国产中年熟女高潮大集合| 国产精品高潮呻吟久久| 久久国产露脸精品国产| 欧美日韩国产一区二区三区| 中文字幕 自拍偷拍| 欧美一区二区三区的| 四虎国产精品永远| 色老头一区二区三区| missav|免费高清av在线看| 国产精品www色诱视频| 欧美a在线观看| 精品视频在线观看| 久久久久美女| 大陆极品少妇内射aaaaa| 久久草av在线| 成年人在线观看av| 亚洲三级电影网站| 无码一区二区三区| 精品毛片乱码1区2区3区 | 色偷偷av一区二区三区| 久色国产在线| 国产在线久久久| 欧洲精品一区| 欧美 日韩 国产精品| 老色鬼久久亚洲一区二区| 操人视频免费看| 久久久久青草大香线综合精品| 欧美日韩大片在线观看| 欧美亚洲日本一区| 五十路在线视频| 久久香蕉国产线看观看av| 综合日韩av| 国产精品久久久久av福利动漫| 中文字幕第31页| 欧美视频精品在线观看| 四虎免费在线观看| 久久精品视频网站| 日韩不卡免费高清视频| 国产精品久久久久免费| 99久久婷婷国产综合精品电影√| 男人日女人bb视频| 国产成人精品1024| 日韩精品一区二区三区在线视频| 欧美性高潮在线| 熟妇高潮一区二区三区| 欧美日韩国产123| www.久久久.com| 亚洲一二三区在线| 日韩极品在线观看| 波多野结衣a v在线| 精品久久久久久| 欧美熟妇另类久久久久久不卡| 九九热精品在线| 激情综合婷婷| 国产女主播av| 国产专区欧美精品| 成人高潮免费视频| 91麻豆精品91久久久久同性| av资源种子在线观看| 国产成人精品日本亚洲| 九九久久电影| 噼里啪啦国语在线观看免费版高清版| 91性感美女视频| 欧美三级韩国三级日本三斤在线观看| 精品国产一二三| bl视频在线免费观看| www 成人av com| 欧美日本一区| 久久久久亚洲av成人网人人软件| 性欧美长视频| 久久国产精品-国产精品| 久久久久久美女精品| 午夜免费福利网站| 亚洲黄色免费电影| 亚洲免费黄色片| 97久久精品人人澡人人爽缅北| 林ゆな中文字幕一区二区| 97国产在线播放| 久久精品亚洲乱码伦伦中文| 欧美 亚洲 另类 激情 另类| 色系列之999| 欧美黄视频在线观看| 精品国产一区二区三区无码| 成人国产电影网| 亚洲黄色三级视频| 国产一区二区三区毛片| 成人在线观看免费视频| 中文字幕一区二区三区四区五区六区 | 一区二区三区视频免费看| 亚洲精品视频久久| 欧美爱爱视频| 97超碰在线视| 91香蕉视频污在线| 亚洲精品国产欧美在线观看| 久久精品国产久精国产思思| 国产在线成人精品午夜| 午夜精品一区二区三区电影天堂| 深夜福利视频一区| 国产精品主播视频| 国产一区欧美| 成人午夜剧场视频网站| 91精品国产一区二区| 888av在线视频| 亚洲一区在线免费| 成人久久视频在线观看| 波多野结衣一区二区三区在线 | 在线中文免费视频| 九色综合婷婷综合| 久久精品免费观看| 日本一本高清视频| 中文字幕免费国产精品| 亚洲电影一区| 污污的网站18| 亚洲午夜久久久久久久久电影网 | 久久亚洲一区二区三区四区| 亚洲自拍第二页| 2024亚洲男人天堂| 午夜久久影院| 人妻一区二区视频|