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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

dotNET Core 3.X 使用 Web API

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dotNET Core 3.X 使用 Web API 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現在的 Web 開發大多都是前后端分離的方式,后端接口的正確使用顯得尤為重要,本文講下在 dotNET Core 3.X 下使用 Web API 。

環境

  • 操作系統:Mac

  • IDE:Rider

  • dotNET Core:3.1

創建項目

如果是 Windows 操作系統當然是首選 VS2019 ,在 Mac 中雖然也有 VS2019 For Mac,但還是感覺 Rider 比較好用(調試和智能提示),在 Rider 中創建 Web API 項目:

3.x 和 2.x 區別

1、Program 類的 IWebHostBuilder 修改為了 IHostBuilder,這一塊的改動如果是直接使用 3.x 可以不用過于關心,如果是從 2.x 升級到 3.x,就要注意了,兩個 Program 類對比結果如下圖:

2、Startup 類的區別如下圖:

最重要的是在 3.x 中使用的是 services.AddControllers(); 來注冊服務,相比?2.x 中的 services.AddMvc() 更加輕量級,因為在 AddMvc 方法中添加了很多 Web API 不需要的功能,如下圖:

3、3.x 引入了新的 JSON API ,新的 JSON API 使用更少的內存,擁有更快的執行速度,引用 using System.Text.Json; 就可以使用,如果需要使用原來的功能,需要引入 Nuget包:Microsoft.AspNetCore.Mvc.NewtonsoftJson

另:

  • 有關 3.x 中被刪除的程序集可以參考這里:https://github.com/dotnet/aspnetcore/issues/3755

  • 有關 3.x 中性能提升可以參考這篇文章:https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-core-3-0/

[ApiController] 特性

在 3.x 中默認項目模板中會創建的一個名為 WeatherForecastController 的控制器,按照約束控制器類以 Controller 結尾。

可以看到在 WeatherForecastController 類的上面自動添加了 [ApiController] 特性,添加此特性后,會對 Api 功能有所加持,比如:

自動模型狀態驗證

意思是當客戶端傳遞的模型數據(輸入參數)不符合要求時,在接口方法中不需要做任何處理,接口會自動返回 400 的錯誤,看下面的例子:

1、創建 UserController 類,并將 [ApiController] 特性注釋掉;
2、添加 User 類,將 Name 屬性設置為 Required;

public?class?User {[Required]public??string?Name?{?get;?set;?}public?string?Code?{?get;?set;?} }

3、在?UserController 類中添加 AddUser 方法

[HttpPost] [Route("adduser")] public?ActionResult?AddUser(User?user) {????return?Ok(); }

4、使用 Postman 調用,沒有添加任何參數,返回的結果為?200

這個結果不是我們所期望的,之前沒有 [ApiController] 特性的時候,需要在接口方法中處理,如下:

[HttpPost] [Route("adduser")] public?ActionResult?AddUser(User?user) {if?(!ModelState.IsValid){return?BadRequest((ModelState));}return?Ok(); }

5、再用 Postman 調用,結果如下:

6、現在添加上 [ApiController] 特性,并將 AddUser 中的校驗邏輯去掉,再次使用 Postman,結果如下:

推斷參數綁定源

之前需要在參數上添加 [FromBody]、[FromQuery]等特性,現在可以去掉這些特性,系統會自動推斷參數的來源,比如:如果一個參數在 Route 里面定義了,會自動從先從Path 查找,沒找到會從查詢參數上查找然后進行綁定。

錯誤狀態碼詳細信息

之前的版本中,如果接口返回一個 BadRequest,是沒有內容的,只有狀態碼,如下:

加上 [ApiController] 特性后,結果如下:

基類

在 3.x 中創建控制器后,默認的基類為 ControllerBase ,該類中提供了 OK、BadRequest 等常用方法給我們使用。

在我們實際開發中,通常會自定義添加一個所有 ?Controller 類的基礎類,一些通用的功能可以放到基類中,比如,對 AutoMapper 的注入,代碼如下:

public?class?BaseController:?ControllerBase {private?readonly?IMapper?_mapper;public?BaseController(IMapper?mapper){_mapper?=?mapper;}public?IMapper?Mapper?=>?_mapper; }

HTTP 方法

先看下面這張圖

按照標準的 RESTful Web API 風格,不同的請求動作需要使用相對應的方法,但實際我們最常用的是 GET 和 POST,查詢使用 GET,其他的操作都是使用 POST。

HTTP 狀態碼

正確的返回狀態碼有助于客戶端分析請求返回結果和問題排查,常用的狀態碼如下:

常見的一個問題:由于客戶端參數的問題,導致接口代碼中執行異常了,最終返回了 500,導致排查問題非常復雜,還需要還原問題場景下的數據和入參。正確的做法應該是對參數做相關校驗最終返回相應的 4XX 的狀態碼。

輸入參數

模型綁定

接口的輸入參數就是通過模型綁定將 HTTP 請求中的值映射到參數中,模型綁定有以下六種:

  • [FromRoute]:通過路由的 URL 中取值,可以自動推斷;

  • [FromQuery]:獲取 URL 地址中的參數,可以自動推斷;

  • [FromBody]:從HTTP Body取值,通常用于取JSON, XML,可以自動推斷;

  • [FromHeader]:獲取 Request Header 中的參數信息,需要指定

  • [FromForm]:獲取 Content-Type 為 multipart/form-data 或 application/x-www-form-urlencoded 類型的參數,需要指定

  • [FromServices]:獲取依賴注入的參數,依賴注入默認是使用構造函數注入,但Controller 可能會因為每個Action用到不一樣的 Service 導致很多參數,所以也可以在 Action 注入Service,需要指定。

下面實現一個使用 [FromServices] 的示例:

1、創建 IUserService 接口和 UserService 類,代碼如下:

public?interface?IUserService {string?GetUserName(string?userId); } public?class?UserService:IUserService {public?string?GetUserName(string?userId){return?$"UserName:{userId}";} }

2、在 Startup 類的 ConfigureServices 方法中添加下面代碼進行注冊

services.AddScoped<IUserService,UserService>();

3、添加 UserController 類,里面添加名為 GetUserName 的 Action 方法

[HttpGet]public?ActionResult<string>?GetUserName(string?userId,??[FromServices]IUserService?userService) {return?Ok($"{userService.GetUserName(userId)}"); }

4、執行結果如下:

參數驗證

參數驗證是非常重要的,否則本來是 4XX 的問題就會變成 5XX 的問題,參數驗證有這么幾種:

  • Data Annotations

  • 自定義 Attribute

  • 實現 IValitableObject 接口

  • 使用第三方的驗證庫,比如 FluentValidation

Data Annotations

1、在 User 的實體類上添加相關特性

public?class?User {[Required(ErrorMessage?=?"姓名不能為空")]public?string??Name?{?get;?set;?}[EmailAddress(ErrorMessage?=?"郵件格式不正確")]public?string??Email?{?get;?set;?} }

2、調用結果如下:

有關更多的 Data Annotations 特性的使用,可以參考官方文檔:https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations?view=netcore-3.1

IValitableObject 接口

1、將 User 類繼承 IValitableObject 接口,并實現 Validate 方法,代碼如下:

public?class?User:?IValidatableObject {[Required(ErrorMessage?=?"姓名不能為空")]public?string??Name?{?get;?set;?}[EmailAddress(ErrorMessage?=?"郵件格式不正確")]public?string??Email?{?get;?set;?}public?IEnumerable<ValidationResult>?Validate(ValidationContext?validationContext){if?(Name?==?Email){yield?return?new?ValidationResult("名稱不能和郵箱相等",new?[]{nameof(Name),nameof(Email)});}} }

2、調用結果如下:

自定義 Attribute

自定義 Attribute 功能和 IValitableObject 接口類似,但可以作用于類級別也能用于屬性級別,更加靈活。

1、創建 NameNotEqualEmailAttribute 類,用來實現判斷 User 類中的名稱和郵箱不能相等

public?class?NameNotEqualEmailAttribute?:?ValidationAttribute {protected?override?ValidationResult?IsValid(object?value,?ValidationContext?validationContext){var?user?=?validationContext.ObjectInstance?as?User;if?(user.Name?==?user.Email){return?new?ValidationResult("名稱不能和郵箱相等",new?[]{nameof(User)});}return?ValidationResult.Success;} }

2、在 User 類上添加此特性

[NameNotEqualEmail] public?class?User {[Required(ErrorMessage?=?"姓名不能為空")]public?string??Name?{?get;?set;?}[EmailAddress(ErrorMessage?=?"郵件格式不正確")]public?string??Email?{?get;?set;?} }

3、調用結果如下:

FluentValidation

FluentValidation 就不多做介紹了,可以參見官方文檔:https://fluentvalidation.net/

ModelBinder

ModelBinder 是自定義模型綁定器,可以對入參的類型進行一些轉換,比如,參數中傳遞 001,002 這樣的字符串,在接口中使用 IEnumerable來進行接收。

1、創建 StringToListModelBinder 類,如下:

public?class?StringToListModelBinder:?IModelBinder { public?Task?BindModelAsync(ModelBindingContext?bindingContext) {if?(!bindingContext.ModelMetadata.IsEnumerableType){bindingContext.Result?=?ModelBindingResult.Failed();return?Task.CompletedTask;}var?value?=?bindingContext.ValueProvider.GetValue(bindingContext.ModelName).ToString();if?(string.IsNullOrWhiteSpace(value)){bindingContext.Result?=?ModelBindingResult.Success(null);return?Task.CompletedTask;}var?elementType?=?bindingContext.ModelType.GetTypeInfo().GenericTypeArguments[0];var?converter?=?TypeDescriptor.GetConverter(elementType);var?values?=?value.Split(new[]?{','},?StringSplitOptions.RemoveEmptyEntries).Select(x?=>?converter.ConvertFromString(x.Trim())).ToArray();var?typedValues?=?Array.CreateInstance(elementType,?values.Length);values.CopyTo(typedValues,0);bindingContext.Model?=?typedValues;bindingContext.Result?=?ModelBindingResult.Success(bindingContext.Model);return?Task.CompletedTask; }

2、在 UserController 類中創建 GetUsersByIds 方法

[HttpGet("ids")] public?ActionResult<List<User>>?GetUsersByIds([ModelBinder(BinderType?=?typeof(StringToListModelBinder))]IEnumerable<string>?ids) {if?(ids?==?null){return?BadRequest();}return?Ok();}

3、調用結果

返回值

返回 XML 格式

盡管使用 Web API 通常都是使用 JSON 格式,但有些時候需要返回 XML 格式,默認情況下,即使請求頭中添加了 Accept=application/xml,接口依然會返回 JSON 格式的結果,想要返回 XML 格式,修改 Startup 類的 ConfigureServices 方法即可。

services.AddControllers().AddXmlDataContractSerializerFormatters();

結果如下:

錯誤信息統一返回

之前的文章中有講過使用過濾器的方式來做到結果的統一返回。這里介紹另一種方式,使用 ConfigureApiBehaviorOptions ,可以讓我們自定義錯誤信息的返回內容和格式。修改 Startup 類中的 ConfigureServices 方法

services.AddControllers().AddXmlDataContractSerializerFormatters().ConfigureApiBehaviorOptions(setup?=>{setup.InvalidModelStateResponseFactory?=?context?=>{var?details?=?new?ValidationProblemDetails(context.ModelState){Type?=?"http://api.oec2003.com/help",Title?=?"實體驗證錯誤",Status?=?StatusCodes.Status422UnprocessableEntity,Detail?=?"看詳細",Instance?=?context.HttpContext.Request.Path,};details.Extensions.Add("trachid",context.HttpContext.TraceIdentifier);return?new?UnprocessableEntityObjectResult(details){ContentTypes?=?{?"application/problem+json"?}};};});

當出現驗證問題時,結果如下:

更多詳細信息可以看文檔:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/handle-errors?view=aspnetcore-3.1

數據塑形

在 API 中返回結果到前端時,一般不會直接將底層的 Entity 返回,會創建相對應的 Dto,比如,用戶的 Entity 是這樣的

public?class?User {public?string??Name?{?get;?set;?}public?string??Email?{?get;?set;?}public?string??Password?{?get;?set;?} }

創建 User 的 Dto 類 UserDto,如下

public?class?UserDto {public?string??Name?{?get;?set;?}public?string??Email?{?get;?set;?}}

在接口的 Action 方法中使用 AutoMapper 做下轉換

[HttpGet("{userId}")] public?ActionResult<UserDto>?GetUserById(string?userId) {User?user?=?new?User(){Name?=?"oec2003",Email?=?"oec2003@qq.com",Password?=?"123456"};return?Ok(base.Mapper.Map<UserDto>(user)); }

請求結果如下:

同樣的接口在前端不同的場景下需要返回不一樣的字段數據,一種方式是創建很多不同的接口,返回不同的 Dto 的結果,但這樣做非常繁瑣,可以通過 ExpandoObject 來實現按客戶端的需要進行返回結果,具體步驟如下:

1、因為獲取用戶列表的接口方法的是 List,所以先創建一個 IEnumerable 的擴展方法,該擴展方法用于根據傳進的字段參數來組裝返回的結果,代碼如下:

public?static?class?IEnumerableExtension {public?static?IEnumerable<ExpandoObject>?GetData<T>(this?IEnumerable<T>?source,?string?fields){if?(source?==?null){throw?new?ArgumentNullException(nameof(source));}var?objectList?=?new?List<ExpandoObject>(source.Count());var?propertyInfoList?=?new?List<PropertyInfo>();if?(string.IsNullOrWhiteSpace(fields)){var?propertyInfos?=?typeof(T).GetProperties(BindingFlags.Public?|BindingFlags.Instance);propertyInfoList.AddRange(propertyInfos);}else{var?fieldSplit?=?fields.Split(',');foreach?(var?field?in?fieldSplit){var?propertyName?=?field.Trim();var?propertyInfo?=?typeof(T).GetProperty(propertyName,BindingFlags.IgnoreCase?|?BindingFlags.Public?|?BindingFlags.Instance);if?(propertyInfo?==?null){throw??new?Exception($"屬性名:{propertyName}?沒有找到");}propertyInfoList.Add(propertyInfo);}}foreach?(T?t?in?source){var?obj=new?ExpandoObject();foreach?(var?propertyInfo?in?propertyInfoList){var?value?=?propertyInfo.GetValue(t);((IDictionary<string,?object>)?obj).Add(propertyInfo.Name,?value);}objectList.Add(obj);}return?objectList;} }

2、創建獲取用戶列表的 Action 方法

[HttpGet] public?ActionResult?GetUsers([FromBody]string?fields) {var?userList?=new?List<User>()?{new?User(){?Name?=?"oec2003",Email?=?"oec2003@qq.com",Password?=?"123456"},new?User(){?Name?=?"oec2004",Email?=?"oec2004@qq.com",Password?=?"123456"},new?User(){?Name?=?"oec2004",Email?=?"oec2004@qq.com",Password?=?"123456"}};var?returnResult?=?base.Mapper.Map<List<UserDto>>(userList);//使用擴展方法按需獲取return?Ok(returnResult.GetData(fields)); }

3、查看調用結果

返回一個屬性 Name

返回所有

最后

本文只是涉及了在 Web API 中比較常用的一些功能點,限于篇幅,每個點并沒有寫的非常深入,也較少涉及原理,但我們在學習過程中,除了實現效果外還應該深入去了解其中細節和原理。

文中示例代碼:https://github.com/oec2003/DotNetCoreThreeAPIDemo

希望本文對您有所幫助。

總結

以上是生活随笔為你收集整理的dotNET Core 3.X 使用 Web API的全部內容,希望文章能夠幫你解決所遇到的問題。

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

成人av中文字幕在线观看 | 久久综合一本 | 日本中文字幕一二区观 | 国产精品国产三级国产不产一地 | 美女搞黄国产视频网站 | 成人av在线看 | 国产v在线播放 | 日韩理论 | 国产精品久久久久久久久久不蜜月 | 久久黄色网页 | 狠狠干激情 | 国产欧美在线一区二区三区 | 久久黄视频 | 日韩一区二区免费播放 | 日韩欧美精选 | 日日精品 | 粉嫩av一区二区三区入口 | 国产一线二线三线在线观看 | 98涩涩国产露脸精品国产网 | 免费看国产一级片 | 99久久婷婷国产 | 在线观看播放av | 在线观看黄网站 | 日日夜夜网 | 黄av免费在线观看 | 欧美影片| 国产免费大片 | 中文字幕超清在线免费 | 在线观看一级视频 | 免费在线成人av | 国产你懂的在线 | 亚洲永久av| 美女在线免费观看视频 | 可以免费观看的av片 | 中文字幕一区二区三区乱码在线 | 西西4444www大胆艺术 | 免费在线观看污 | 欧美天天综合网 | 久久精品视频在线观看免费 | 91久久人澡人人添人人爽欧美 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 国产成人精品一区二三区 | 久久66热这里只有精品 | 色国产在线 | 国产色一区 | 亚洲精品国精品久久99热 | 三级在线视频观看 | 国产黄色片在线免费观看 | 丁香婷婷在线 | 久久精品老司机 | 亚洲精品小区久久久久久 | 精品久久久久久久久久久久久 | 欧美一二三区播放 | 一本一本久久a久久精品牛牛影视 | 欧洲精品在线视频 | 天天射天天干 | 日韩精品一区二区三区在线视频 | 国产高清视频在线播放 | 久久久精品二区 | 中文字幕黄色av | 日韩精品在线看 | 日韩一区二区三区不卡 | 久久艹中文字幕 | 超碰97在线人人 | 久久婷婷色综合 | 中文字幕在线视频国产 | 国产免费激情久久 | www.天天射.com | 亚洲精品小视频 | 国产一级免费电影 | 欧美日韩国产一二 | 欧美日韩精品在线观看视频 | 亚洲黄色网络 | 五月综合色婷婷 | 中日韩三级视频 | 三级黄色欧美 | 99热这里只有精品8 久久综合毛片 | 欧美男女爱爱视频 | 久草在线播放视频 | 伊人色**天天综合婷婷 | x99av成人免费| 欧美最爽乱淫视频播放 | 91激情视频在线播放 | 久久热首页 | 免费在线观看国产精品 | 日韩免费高清在线 | 午夜电影久久久 | 国产精品高潮呻吟久久久久 | 国产日产精品一区二区三区四区的观看方式 | 亚洲播放一区 | 亚州精品天堂中文字幕 | 色先锋av资源中文字幕 | 国产精品18久久久久久久久 | av软件在线观看 | 亚洲精品五月 | 色九九视频 | 久久久久久久久久久久电影 | 亚洲国产电影在线观看 | 久久久18| 国产亚洲aⅴaaaaaa毛片 | 天天草天天爽 | 99热99re6国产在线播放 | 中文字幕乱码亚洲精品一区 | 国产精品美女久久久久久久久久久 | 草久草久 | 91麻豆精品国产自产在线游戏 | 91精品少妇偷拍99 | 久久99国产精品免费网站 | 91精品影视 | 在线视频精品 | 91视频 - 88av | 欧美亚洲国产精品久久高清浪潮 | 亚洲精品视频网址 | 91精品在线播放 | 久久黄页 | 五月婷婷欧美视频 | 久久综合色影院 | 免费在线国产精品 | 91xav| www亚洲国产| 免费观看黄 | 色爱区综合激月婷婷 | 国产精品永久在线 | 亚洲精品一区二区三区在线观看 | 99热在线国产精品 | 日本丶国产丶欧美色综合 | 亚洲美女精品 | 亚洲精品国产欧美在线观看 | 免费在线一区二区 | 天天色草| 欧美日韩在线网站 | 91精品视频导航 | 青青河边草免费直播 | 99热 精品在线 | 免费看91的网站 | 婷婷色影院 | 狠狠干狠狠色 | 久久综合久久久 | 91爱爱视频| 97精品欧美91久久久久久 | 色福利网 | 成年人视频在线观看免费 | 国产91成人在在线播放 | 福利视频一二区 | 日本超碰在线 | www.色国产| 黄色电影小说 | 人人看97| 久操视频在线 | 四虎成人精品永久免费av九九 | 久久露脸国产精品 | 一本一道久久a久久精品 | 欧美日本在线视频 | 黄色电影网站在线观看 | 激情欧美xxxx | 99精品热视频只有精品10 | 久久久久女人精品毛片 | 99免费视频 | 久久久天堂 | 99久久婷婷国产一区二区三区 | 日日夜夜天天久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 免费三级骚 | 天天操天天摸天天爽 | 国产在线观看地址 | 久久不卡视频 | 久久精品—区二区三区 | www日韩在线观看 | 国产亚洲视频系列 | 91精品国产自产91精品 | 久久久免费在线观看 | 综合天堂av久久久久久久 | 人人玩人人添人人 | 美女免费视频观看网站 | 国产一区二区在线精品 | 中文字幕免费中文 | 人人爽人人看 | 色狠狠婷婷| 久久99久久久久久 | 久久超碰在线 | 国产精品成人国产乱一区 | 中文国产在线观看 | 国产福利一区二区三区视频 | 国产一级片免费视频 | 久久久久久久久久网站 | 狠狠操操操 | 亚洲综合在线五月 | 欧美激情奇米色 | 国产美女精品视频免费观看 | 免费情趣视频 | 欧美一进一出抽搐大尺度视频 | 国产亚洲精品久久久久久 | 国产一区二区在线观看视频 | 中文字幕在线观看的网站 | 婷婷丁香激情综合 | 久久优| 97超碰色 | 在线 日韩 av | 伊人黄色网 | 国产精品久久久99 | 国产二区av| 中文字幕一区二区三区在线播放 | 国产资源精品在线观看 | 免费网站观看www在线观看 | 欧美性极品xxxx娇小 | 国产精品久久久久久久久久久免费看 | 99久久久久国产精品免费 | 国产精品免费在线 | 国产在线视频导航 | 99免费在线观看 | 免费看v片网站 | 久久九九免费视频 | 欧美日韩一区二区免费在线观看 | 亚洲精品日韩av | 少妇高潮流白浆在线观看 | 中文字幕色婷婷在线视频 | 国产婷婷vvvv激情久 | 最近在线中文字幕 | av网站地址 | av在线进入 | 久久精品99国产精品日本 | 亚洲香蕉视频 | 亚洲午夜精 | 国产黄色免费在线观看 | 色噜噜在线观看视频 | 丁香婷婷激情啪啪 | 国产精品九九久久久久久久 | 国产高清视频在线播放 | 国产在线色站 | 日韩系列 | 成人午夜免费福利 | 一级黄色片在线观看 | 精品国产乱码久久久久久1区二区 | 免费久久片 | 久久a久久 | 久久成人一区 | 99视频精品全部免费 在线 | 色偷偷中文字幕 | 日韩精品视频在线观看网址 | 激情欧美日韩一区二区 | 欧美成人精品欧美一级乱 | 亚洲国产播放 | 天天看天天干 | 国产视频网站在线观看 | 美女在线免费观看视频 | 色婷婷综合成人av | 成人h在线观看 | 亚洲精品视频免费看 | 日韩女同一区二区三区在线观看 | 四虎国产精品成人免费影视 | 国产欧美最新羞羞视频在线观看 | 欧美精品久久人人躁人人爽 | 在线日韩三级 | 911香蕉视频 | 国产又黄又猛又粗 | 综合黄色网 | 亚洲欧美精品在线 | 久久精品一二区 | 久久视频6 | 久久avav | 亚洲免费a| 天天色天天综合 | 亚洲精品88欧美一区二区 | 97视频在线观看播放 | 日本久久久精品视频 | 国产第页 | 99久久网站 | 999色视频| 欧洲视频一区 | 免费网站在线观看成人 | 欧美午夜一区二区福利视频 | 一区二区三区四区久久 | 国产一区免费视频 | 欧美a影视 | 欧美精品久久久久久 | 亚州欧美视频 | 久久久国产精品电影 | 天堂av一区二区 | 国产玖玖在线 | 亚洲色影爱久久精品 | 蜜桃视频在线观看一区 | 国产群p视频 | 日韩精品一区二区三区免费视频观看 | 欧美黄色免费 | 99re8这里有精品热视频免费 | 91爱爱视频 | 国产一级在线视频 | 亚洲日本在线一区 | 在线国产一区二区 | 亚洲精品日韩一区二区电影 | 国产在线观看高清视频 | 精品电影一区二区 | 字幕网在线观看 | 国产在线永久 | 国产三级午夜理伦三级 | 午夜久久精品 | 九色在线视频 | 日韩在线视频免费播放 | 97电影在线观看 | 黄色国产精品 | 欧美做受xxx | 五月花丁香婷婷 | 九九三级毛片 | 久久久久久久影院 | 久久爽久久爽久久av东京爽 | 中文超碰字幕 | av成人动漫在线观看 | 一区二区三区在线免费观看 | 久久xx视频| 婷婷激情综合网 | 99精品国产一区二区三区麻豆 | 久久8| 日p视频在线观看 | 日本黄色免费播放 | 91av在线免费视频 | 国产精品99爱 | 国产精品亚州 | 99在线精品观看 | 免费精品视频在线 | 欧美一级黄色片 | 国产99久久九九精品 | 亚洲成年人免费网站 | www.国产在线视频 | 91在线小视频| 亚洲日本精品视频 | 91在线永久| a级国产乱理伦片在线播放 久久久久国产精品一区 | 久久在线影院 | 丁香九月婷婷 | 97成人超碰 | av在线电影网站 | 中文字幕美女免费在线 | 黄色国产成人 | 欧美日在线观看 | 国产a级免费 | 色综合天天在线 | 中文不卡视频在线 | 91视频com| 91在线看视频 | 国产成人精品久久久 | 久久久美女 | 久热久草在线 | 亚洲日本欧美在线 | 99色99| 婷婷亚洲五月色综合 | 黄色大片av | 国产精品久久久久久久久久久免费 | 国产白浆在线观看 | 97综合网| 999视频网| 亚洲黄色av| 四虎国产视频 | 亚洲国产99 | 午夜精品电影一区二区在线 | 国产免费不卡av | 亚州精品一二三区 | 欧美一区二区三区免费看 | 免费视频一区二区 | 国产黄a三级三级三级三级三级 | 国产一区av在线 | 亚洲2019精品 | 国产精品久久久久久久毛片 | 久久久久久黄 | 97中文字幕| 国产精品一区二区三区在线播放 | 青草视频免费观看 | 91九色视频 | 玖玖视频网 | 97超碰人 | 激情综合色播五月 | 亚洲 欧美 综合 在线 精品 | 久久综合欧美精品亚洲一区 | 免费h在线观看 | av免费试看 | 欧美日韩精品在线观看 | 国产香蕉视频 | 人人爽久久涩噜噜噜网站 | 2023年中文无字幕文字 | 在线成人性视频 | 亚洲综合色丁香婷婷六月图片 | 久久超| 国产视频69 | 国产精品九九久久99视频 | 国产精品一区二区三区在线免费观看 | 欧美专区日韩专区 | 久久午夜免费视频 | 在线天堂v | 色国产精品一区在线观看 | 国产91精品一区二区绿帽 | 91精品国产高清自在线观看 | a色网站| 日韩特级毛片 | 97av超碰| 特级毛片网站 | 97在线免费观看 | 免费看的国产视频网站 | 欧美日韩精 | 黄色av电影网 | 国产精品一区二区久久久 | 国内精品美女在线观看 | 日日激情 | 久久看看| 日韩区欠美精品av视频 | freejavvideo日本免费 | 亚洲视频在线免费看 | 成年人在线观看视频免费 | 婷婷丁香色 | 九九久久久久99精品 | 国产精品久久久久高潮 | 999久久 | 午夜精品影院 | 九九热在线精品视频 | 国产精品九九九九九 | 九色视频网址 | 五月精品| 日韩高清免费无专码区 | 亚洲欧美日韩一二三区 | 青青啪 | 狠狠色综合网站久久久久久久 | 天天操网址 | 18国产精品福利片久久婷 | 欧美 亚洲 另类 激情 另类 | 日韩午夜三级 | 91黄色视屏 | 蜜臀久久99静品久久久久久 | 天天做天天爱天天爽综合网 | 久久免费国产精品 | 日韩精品一区二区三区中文字幕 | 999一区二区三区 | 亚洲 欧美 日韩 综合 | 国产在线精 | www.888av| 日日干夜夜骑 | 天天综合色天天综合 | 久久精品三| 欧美天堂久久 | 日韩精品中文字幕在线 | 国产免费激情久久 | 国产精品一区一区三区 | 国产精品99久久久久久宅男 | 日韩成人免费在线 | 日韩手机在线观看 | 中文字幕精品在线 | 免费看精品久久片 | 午夜精品久久久久久久99水蜜桃 | 成人黄色国产 | 精品久久国产一区 | 日本乱码在线 | 99久久久久久久久久 | 粉嫩av一区二区三区免费 | 亚洲精品在线一区二区三区 | 天天艹 | 欧美日韩18 | 91视频啊啊啊 | 97视频入口免费观看 | 日韩大片在线观看 | 66av99精品福利视频在线 | 国产在线色视频 | 黄色看片 | 国产精品久久久毛片 | 日本黄色免费播放 | 色综合久久精品 | 亚洲精品日韩av | 国产成人精品久久久久 | 国产一级片免费观看 | www·22com天天操 | 不卡的av电影 | 亚洲成av人影片在线观看 | 免费在线观看成人小视频 | 天天干天天做天天操 | 国产成人精品电影久久久 | 高潮久久久久久久久 | av解说在线| 香蕉视频最新网址 | 999成人 | 国产精品婷婷 | 蜜臀av性久久久久蜜臀av | 九九免费在线看完整版 | av片在线观看免费 | 久久字幕网 | 国产一区视频在线观看免费 | 国产一区电影在线观看 | 玖玖视频在线 | 国产一级片一区二区三区 | 92中文资源在线 | 99re亚洲国产精品 | 日韩中文在线电影 | 婷婷视频在线 | 国产亚洲欧美一区 | 精品国产_亚洲人成在线 | 国产色网站 | 波多野结衣在线观看一区二区三区 | 国产精品视频资源 | 成年人看片网站 | 另类老妇性bbwbbw高清 | 玖玖玖影院 | 狠狠88综合久久久久综合网 | 一级欧美一级日韩 | 国产亚洲婷婷 | 精品亚洲成a人在线观看 | 91精品视屏 | 色综合天天视频在线观看 | 久久成人在线 | www.91av在线| 国产精品 欧美 日韩 | 在线天堂中文在线资源网 | 色综合天天综合 | 欧美孕交vivoestv另类 | 99热高清| 国产亚洲婷婷免费 | 国产精品二区在线观看 | 日韩在线视频免费播放 | 97超碰在线免费观看 | 黄色网www | 国产精品video爽爽爽爽 | 手机看片午夜 | 成人黄色在线播放 | 亚洲欧美日韩精品久久久 | 九九久久视频 | 中文字幕av电影下载 | 2022中文字幕在线观看 | 国产99久久久精品 | 国产精品va最新国产精品视频 | 午夜国产福利在线 | 最近中文字幕在线播放 | 色干综合 | 中文字幕精品一区二区三区电影 | 又黄又刺激视频 | 96久久欧美麻豆网站 | 成人av网址大全 | 国产精品久久久久久久久婷婷 | 久久高清片 | 欧美日韩综合在线观看 | 欧美一区二区三区在线播放 | 欧美日韩中文在线观看 | 国产福利免费看 | 亚洲精品视频第一页 | 久久日韩精品 | 黄色一级大片在线免费看产 | 国产亚洲精品久久久久动 | 99精品在线观看视频 | 黄色小说免费观看 | 91视频a | 黄色av网站在线观看免费 | 久草在线网址 | 免费黄色小网站 | 亚洲一区二区精品视频 | 91天天操 | 超碰在线天天 | 99精品视频免费 | 五月激情五月激情 | 久草在线免费看视频 | 永久av免费在线观看 | 国产亚洲欧美一区 | 欧洲精品视频一区 | 久久er99热精品一区二区 | 韩国精品在线观看 | 久久精品国产免费看久久精品 | 成人久久视频 | 中文字幕免费观看视频 | 久久国产乱 | 美女视频a美女大全免费下载蜜臀 | 日日干视频 | 国产网站色 | 午夜视频色| 国产精品久久久久一区二区国产 | 国产爽妇网 | 久久国产精品区 | 一级免费av | 91精彩在线视频 | 99国内精品久久久久久久 | 天天艹天天操 | 黄色av网站在线免费观看 | 日韩黄色av网站 | 最近更新的中文字幕 | 欧美a级在线播放 | 久久激情视频 | 日本高清中文字幕有码在线 | 欧美日韩不卡一区 | 国产精品系列在线播放 | 午夜视频在线观看一区二区三区 | 精品国产精品久久 | 韩国av不卡 | 91福利视频一区 | www.久久色 | 成人精品亚洲 | 亚洲日本va在线观看 | 色婷婷综合久久久中文字幕 | 首页av在线 | 国产原创在线视频 | 久久草网站 | 成年人国产在线观看 | 日韩欧美91 | 久久免费99精品久久久久久 | 亚洲精品视频久久 | 亚洲精品a区| 天天干天天干天天干天天干天天干天天干 | 最新av观看 | 麻豆视频在线免费观看 | 99视频免费| av福利网址导航 | 午夜美女福利 | 国产一级一级国产 | 99热这里只有精品1 av中文字幕日韩 | 91成人在线观看高潮 | 免费观看www视频 | 久9在线| 精品欧美一区二区在线观看 | 婷婷在线观看视频 | 不卡的av片 | 99re视频在线观看 | 久久96国产精品久久99漫画 | 免费观看一区二区 | 国产精品9区 | 国产在线观看av | 韩国三级av在线 | 亚洲日本在线一区 | 超碰97在线人人 | 国内精品久久久久影院一蜜桃 | 麻豆传媒一区二区 | 欧美日韩精品在线一区二区 | 东方av免费在线观看 | 在线激情av电影 | 色视频在线观看免费 | 国产精品免费视频网站 | 亚洲婷婷在线视频 | 91视频传媒 | 国产精品久久片 | 国产香蕉视频在线播放 | 一本之道乱码区 | 四虎8848免费高清在线观看 | 国产精品女人网站 | 中文字幕一区二区三区四区在线视频 | 国产精品区二区三区日本 | 欧美午夜精品久久久久 | 在线观看视频精品 | 99热官网 | 99性视频 | 黄在线免费看 | 亚洲欧洲精品一区二区 | 日韩网站在线 | 97av视频 | 午夜婷婷在线播放 | 久久午夜精品影院一区 | a'aaa级片在线观看 | 欧美精品久久久久a | 久久综合免费视频影院 | 国产亚洲视频系列 | 一级黄色片在线免费看 | 亚洲激情 | 国产伦理久久 | 天天av天天| 五月婷婷开心 | 欧美性极品xxxx做受 | av电影在线观看 | 日韩欧美在线视频一区二区 | 日韩动态视频 | 久久久国产精品人人片99精片欧美一 | 在线一二三区 | 欧美日韩免费在线观看视频 | 久久久免费视频播放 | 9幺看片 | 在线观看你懂的网站 | 97超碰国产精品女人人人爽 | 香蕉视频91| 欧美日韩在线视频观看 | av高清一区二区三区 | 日韩一二三 | 免费成人在线电影 | 丰满少妇对白在线偷拍 | 亚洲天堂网在线播放 | 4438全国亚洲精品在线观看视频 | 一区二区三区电影在线播 | 免费观看成人 | 天天色天天草天天射 | 免费观看成人 | 婷婷色站 | 日韩系列在线观看 | 中文字幕在线播放第一页 | 亚洲欧美观看 | 免费在线观看av网址 | 我爱av激情网 | 亚洲性视频 | 新版资源中文在线观看 | 天天爽人人爽夜夜爽 | 在线免费观看亚洲视频 | 99热手机在线观看 | 一级黄色免费网站 | 国产原创在线视频 | 色狠狠综合 | 久久久久国产精品厨房 | 九九色综合 | 蜜桃久久久 | 日韩精品一区二区三区不卡 | 波多野结衣一区二区三区中文字幕 | 激情婷婷综合 | 久久伊人91| 在线国产99 | 天天操夜夜干 | 国产视频在线观看一区 | 在线观看国产日韩欧美 | 精品国偷自产国产一区 | www.黄色片网站 | 中文字幕在线观看1 | 日日夜夜噜噜噜 | 久久久久欧美精品 | 日韩一区视频在线 | 丁香视频在线观看 | 一级黄色电影网站 | 亚洲春色综合另类校园电影 | 亚洲jizzjizz日本少妇 | 亚洲国产成人高清精品 | 奇米网网址 | 国产免费区 | 亚洲做受高潮欧美裸体 | www.婷婷com | 国产婷婷色 | 中文字幕在线专区 | 日韩欧美一区二区三区黑寡妇 | 麻豆影视在线观看 | 黄色91免费观看 | 激情五月综合网 | 99免费在线观看视频 | 欧美日韩精品久久久 | 丁香六月婷婷激情 | 97超碰福利久久精品 | 国产一级二级视频 | 亚洲精品在线观看不卡 | 91成年视频 | 欧美日韩69 | 五月天视频网站 | 久热电影 | 亚洲一区网 | 欧美综合在线视频 | 91福利区一区二区三区 | 97超级碰 | 香蕉成人在线视频 | 亚洲精品在线观 | 91麻豆网站| 黄色亚洲精品 | 国产专区在线 | 亚洲成a人片在线www | 91免费观看视频网站 | 97精品超碰一区二区三区 | 日韩精品免费在线观看视频 | 免费三级骚 | 在线观看的av | 日韩中文字幕网站 | 超碰97免费观看 | 在线观看av大片 | 最新成人av| 国产精品久久一卡二卡 | 特级免费毛片 | 天天躁日日躁狠狠躁av中文 | 国产成人一区二区三区影院在线 | 最新日韩在线观看视频 | 国产淫片免费看 | 色婷婷骚婷婷 | 99久久99久久精品免费 | 白丝av在线 | 91av在线免费视频 | 欧美乱淫视频 | 婷婷亚洲综合五月天小说 | 992tv又爽又黄的免费视频 | 久久久久久久久久久免费视频 | 久久久久久久综合色一本 | 久久96国产精品久久99软件 | 亚洲精品久久视频 | 久久久久网站 | 天天色综合三 | av观看免费在线 | 在线观看www91 | 激情综合五月网 | 国产手机精品视频 | 91在线中文字幕 | 热久久精品在线 | 久久手机免费视频 | 天天操天天舔天天爽 | 国产伦精品一区二区三区… | 黄色免费视频在线观看 | 狠狠狠狠狠狠狠狠干 | 久久免费视频在线 | 国产精品一区二区视频 | 在线免费观看黄色小说 | 国产黄色在线观看 | 97精品视频在线 | 精品国产免费av | 91.dizhi永久地址最新 | 国产亚洲精品久久久久久电影 | 免费 在线 中文 日本 | 日韩二区在线 | 粉嫩av一区二区三区四区在线观看 | 免费久久久久久久 | 在线观看亚洲国产精品 | 麻豆高清免费国产一区 | 香蕉网在线播放 | av在线网站免费观看 | 黄色大片视频网站 | a级国产乱理论片在线观看 伊人宗合网 | 国产97在线视频 | 在线视频日韩精品 | 国产精品激情偷乱一区二区∴ | 五月婷网 | 国产精品毛片一区二区在线 | 中文国产字幕在线观看 | 手机av电影在线 | 成人免费观看完整版电影 | 伊人久久影视 | 99久精品 | 日日夜夜网 | 色在线高清 | 精品乱码一区二区三四区 | 蜜桃视频日本 | 最新国产视频 | 日韩av免费在线看 | 国产va饥渴难耐女保洁员在线观看 | 欧美日本不卡视频 | 996久久国产精品线观看 | 黄网在线免费观看 | 在线看片日韩 | 久久乐九色婷婷综合色狠狠182 | 中文字幕日韩有码 | 亚洲乱亚洲乱妇 | www.天天色 | 一区二区三区电影在线播 | 久久99视频精品 | 久久久久久久久久久综合 | 久久99视频免费 | 国产亚洲精品无 | 91成人精品一区在线播放69 | 激情视频免费在线观看 | 欧美一区二区在线看 | 国产成人av免费在线观看 | 国产 色| 精品久久免费看 | 成人午夜电影在线观看 | www.久久久.com | 欧美男女爱爱视频 | 91九色精品女同系列 | 精品在线二区 | 97色婷婷人人爽人人 | 亚洲精品久久久久久久蜜桃 | 亚洲久草在线 | 国产 日韩 在线 亚洲 字幕 中文 | 久久成人综合视频 | 亚洲区二区 | 99热在线观看 | 国内偷拍精品视频 | 国产在线播放一区二区三区 | 色综合天天色综合 | 亚洲国产综合在线 | 日本九九视频 | 日韩激情第一页 | 中文在线免费视频 | 日韩在线首页 | 在线观看av小说 | 亚洲成人资源网 | 91精品免费看 | 日韩大陆欧美高清视频区 | 日韩精品久久久久久久电影竹菊 | 欧美在线一二区 | 国产999精品久久久 免费a网站 | 香蕉网在线观看 | 人人插人人草 | 国产一级免费av | 九九久久国产精品 | 亚洲日本在线视频观看 | 成人h在线观看 | 国产日韩中文字幕在线 | 日韩在线高清免费视频 | 伊人天天色 | 2019中文最近的2019中文在线 | 午夜视频免费 | 国产精品无av码在线观看 | 国产精品原创在线 | 日韩伦理一区二区三区av在线 | jizzjizzjizz亚洲 | 国内精品亚洲 | 国产精品久久久久影院日本 | 日韩欧美高清 | 国产精品对白一区二区三区 | 亚洲高清视频在线播放 | 97在线免费观看视频 | 夜夜操网站 | 就要色综合 | 在线观看蜜桃视频 | 亚洲精品小区久久久久久 | 久久精品伊人 | 亚洲精品乱码久久久久久写真 | 亚洲五月婷 | 国产精品一区二区三区在线免费观看 | 久久草在线免费 | 国产精品久久一区二区无卡 | 五月综合婷| 91精品一区二区三区久久久久久 | 久草| 五月天色综合 | 国产精品美女免费看 | 国产精品美女免费看 | 免费成人看片 | 日韩中文在线播放 | 国产视频97 | 精品久久久久久亚洲综合网站 | 成年人免费看片网站 | 国产日韩欧美在线影视 | 99视频免费在线观看 | 99精品偷拍视频一区二区三区 | 国产一区久久久 | 97超碰中文字幕 | 日韩在线免费不卡 | 免费在线中文字幕 | 国产国产人免费人成免费视频 | 日韩精品视频免费看 | 久久国产精品99国产精 | 国产亚洲视频系列 | 天天插综合网 | 日韩字幕| 国产一级片不卡 | 成人三级网址 | 国产无吗一区二区三区在线欢 | 日日麻批40分钟视频免费观看 | 国产不卡在线看 | 日本一区二区免费在线观看 | 一区二区不卡高清 | 中文字幕在线视频国产 | 日韩欧美精品一区二区三区经典 | 日韩三级久久 | 国产91免费在线 | 亚洲国产精品成人va在线观看 | 日韩在线网 | 欧美日韩网站 | 欧美亚洲免费在线一区 | 91在线国内视频 | 日韩精品在线播放 | 区一区二区三区中文字幕 | 亚洲免费专区 | 久久久香蕉视频 | 久久精品人人做人人综合老师 | 在线网址你懂得 | av在线短片 | 欧美 日韩 国产 中文字幕 | 天天天天天天干 | 激情视频区 | 久久久99精品免费观看 | 亚洲三级黄色 | 九九九九热精品免费视频点播观看 | 成年人视频在线免费 | 天天综合色 | av观看网站| av电影免费在线播放 | 天天干天天射天天操 | 日本大尺码专区mv | 米奇影视7777 | 欧美一区二区三区激情视频 | 国产美女被啪进深处喷白浆视频 | 香蕉久久久久 | 欧美日韩高清一区二区 国产亚洲免费看 | 91在线日本 | 免费国产在线精品 | 超碰精品在线观看 | 久久中文字幕导航 | 超碰在线97国产 | 视频国产精品 | 91成人在线观看喷潮 | 久久久首页 | a√天堂中文在线 | 青草视频在线播放 | 999视频网 | 欧美aa级| 99精品国产一区二区三区麻豆 | 天天操欧美 | 久久热首页 | 日本久久综合视频 | 99中文字幕在线观看 | 丁香花在线观看视频在线 | 久草网免费 | 狠狠狠色丁香婷婷综合激情 | 国产亚洲欧美精品久久久久久 | 日韩有码专区 | 美女黄视频免费 | www久久久久 | 在线观看视频色 | 久久免费视频2 | 精品国产一区二区三区日日嗨 | 在线观看视频国产 | 亚洲精品国 | av福利资源| 成人在线观看影院 | 国产女v资源在线观看 | 欧美精品国产综合久久 | 色婷婷九月 | 免费a网站 | 精品久久久一区二区 | 激情欧美一区二区三区免费看 | 久久成人在线 | 免费黄色在线播放 | 免费在线观看国产精品 | 在线视频区|