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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅析如何在Nancy中生成API文档

發(fā)布時(shí)間:2023/12/4 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅析如何在Nancy中生成API文档 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

前后端分離,或許是現(xiàn)如今最為流行開發(fā)方式,包括UWP、Android和IOS這樣的手機(jī)客戶端都是需要調(diào)用后臺(tái)的API來進(jìn)行數(shù)據(jù)的交互。

但是這樣對(duì)前端開發(fā)和APP開發(fā)就會(huì)面臨這樣一個(gè)問題:如何知道每個(gè)API做什么?

可能,有人會(huì)在內(nèi)部形成一份word文檔、pdf;有人會(huì)建立一個(gè)單獨(dú)的站點(diǎn),然后將API的地址,參數(shù)等信息列在上面;有人會(huì)借助第三方的工具來生成一份文檔等。

當(dāng)然,這基本是取決于不同公司的規(guī)范。

說起API文檔,就想到前段時(shí)間做的微信小程序,由于那個(gè)不完善的接口文檔,從而導(dǎo)致浪費(fèi)了很大一部分時(shí)間去詢問接口相關(guān)的內(nèi)容(用的是老的接口)。

為了處理這個(gè)問題,我認(rèn)為,如果能在寫某個(gè)API的時(shí)候就順帶將這個(gè)API的相關(guān)信息一并處理了是最好不過!

不過這并不是讓我們寫好一個(gè)接口后,再去打開word等工具去編輯一下這個(gè)API的信息,這樣明顯需要花費(fèi)更多的時(shí)間。

下面就針對(duì)這一問題,探討一下在Nancy中的實(shí)現(xiàn)。

如何實(shí)現(xiàn)

其實(shí),想在Nancy中生成API文檔,是一件十分容易的事,因?yàn)樽髡?strong>thecodejunkie已經(jīng)幫我們?cè)贜ancy內(nèi)部提前做了一些處理

便于我們的后續(xù)擴(kuò)展,這點(diǎn)還是很貼心的。

下面我們先來寫點(diǎn)東西,后面才能相應(yīng)的API文檔。

public class ProductsModule : NancyModule{ ?
?public ProductsModule() : base("/products") ?
?
{ ? ? ? ?Get("/", _ =>{ ? ? ? ? ?
??return Response.AsText("product list");}, null, "GetProductList"); ? ?
??? ?Get("/{productid}", _ =>{ ? ? ? ? ?
??? ??return Response.AsText(_.productid as string);}, null, "GetProductByProductId"); ? ? ?
??? ?? ?Post("/", _ =>{ ? ? ? ? ?
??? ?? ? ?return Response.AsText("Add product");}, null, "AddProduct"); ? ? ? ?//省略部分..} }

基本的CURD,沒有太多的必要去解釋這些內(nèi)容。當(dāng)然這里需要指出一點(diǎn)。

正常情況下,我們基本都是只寫前面兩個(gè)參數(shù)的,后面兩個(gè)參數(shù)是可選的。由于我們后面需要用到每個(gè)路由的名字

所以我們需要用到這里的第4個(gè)參數(shù)(當(dāng)前路由的名字),也就意味著我們要在定義的時(shí)候?qū)懚嘁稽c(diǎn)東西!

注: 1.x和2.x的寫法是有區(qū)別的!示例用的2.x的寫法,所以各位要注意這點(diǎn)!

以GET為例,方法定義大致如下

API寫好了,下面我們先來簡單獲取一下這些api的相關(guān)信息!

最簡單的實(shí)現(xiàn)

前面也提到,我們是要把這個(gè)api和api文檔放到同一個(gè)站點(diǎn)下面,免去編輯這一步驟!

世間萬物都是相輔相成的,我們不想單獨(dú)編輯,自然就要在代碼里面多做一些處理!

新起一個(gè)Module名為DocModule,將api文檔的相關(guān)內(nèi)容放到這個(gè)module中來處理。

public class DocMudule : NancyModule{
? ?private IRouteCacheProvider _routeCacheProvider; ?
? ?
? ? ?public DocMudule(IRouteCacheProvider routeCacheProvider) : base("/docs")
?
{ ? ?
? ? ?? ?this._routeCacheProvider = routeCacheProvider; ? ? ?
? ? ?? ? ?Get("/", _ =>{ ? ? ? ? ? ?var routeDescriptionList = _routeCacheProvider.GetCache().SelectMany(x => x.Value).Select(x => x.Item2).Where(x => !string.IsNullOrWhiteSpace(x.Name)).ToList(); ? ? ? ? ?
? ? ?? ? ??return Response.AsJson(routeDescriptionList);});} }

沒錯(cuò),你沒看錯(cuò),就是這幾行代碼,就可以幫助我們?nèi)ド晌覀兿胍腶pi文檔!其實(shí)最主要的是IRouteCacheProvider這個(gè)接口。

它的具體實(shí)現(xiàn),會(huì)在后面的小節(jié)講到,現(xiàn)在先著重于使用!

先調(diào)用這個(gè)接口的GetCache方法,以拿到緩存的路由信息,這個(gè)路由信息有必要來看一下它的定義,因?yàn)椴豢此亩x,我們根本就沒有辦法繼續(xù)下去!

后續(xù)的查找都是依賴于這些緩存信息!

public interface IRouteCache : IDictionary<Type, List<Tuple<int, RouteDescription>>>,
ICollection<KeyValuePair<Type, List<Tuple<int, RouteDescription>>>>,
?IEnumerable<KeyValuePair<Type, List<Tuple<int, RouteDescription>>>>, IEnumerable

{ ? ?bool IsEmpty(); }

看了上面的定義,就可以清楚的知道要用SelectMany去拿到那個(gè)元組的內(nèi)容。再取出元組的RouteDescription。

當(dāng)然,這個(gè)時(shí)候我們?nèi)〉降氖撬械穆酚尚畔?#xff0c;這些信息都包含了什么內(nèi)容呢?看看RouteDescription的定義就很清晰了。

public sealed class RouteDescription{ ? ?public RouteDescription(string name, string method, string path, Func<NancyContext, bool> condition); ? ?//The name of the routepublic string Name { get; set; } ? ?//The condition that has to be fulfilled inorder for the route to be a valid match.public Func<NancyContext, bool> Condition { get; } ? ?//The description of what the route is for.public string Description { get; set; } ? ?//Gets or sets the metadata information for a route.public RouteMetadata Metadata { get; set; } ? ?//Gets the method of the route.public string Method { get; } ? ?//Gets the path that the route will be invoked for.public string Path { get; } ? ?//Gets or set the segments, for the route, that was returned by the Nancy.Routing.IRouteSegmentExtractor.public IEnumerable<string> Segments { get; set; } }

在查詢之后,我還過濾了那些名字為空的,不讓它們顯示出來。為什么不顯示出來呢?理由也比較簡單,像DocModule,我們只定義了一個(gè)路由

而且這個(gè)路由在嚴(yán)格意義上并不屬于我們api的內(nèi)容,而且這個(gè)路由也是沒有定義名字的,所以顯示出來的意義也不大。

過濾之后,就得到了最終想要的信息!簡單起見,這里是先直接 返回一個(gè)json對(duì)象,便于查看有什么內(nèi)容,便于在逐步完善后再把它結(jié)構(gòu)化。

下面是最簡單實(shí)現(xiàn)后的大致效果:

在圖中,可以看到GetProductListGetProductByProductId這兩個(gè)api的基本信息:請(qǐng)求的method,請(qǐng)求的路徑和路由片段。

但是這些信息真的是太少了!連api描述都見不到,拿出來,肯定被人狠狠的罵一頓!!

下面我們要嘗試豐富一下我們的接口信息!

豐富一點(diǎn)的實(shí)現(xiàn)

要讓文檔充實(shí),總是需要一個(gè)切入點(diǎn),找到切入點(diǎn),事情就好辦了。仔細(xì)觀察上面的效果圖會(huì)發(fā)現(xiàn),里面的metadata是空的。當(dāng)然這個(gè)也就是豐富文檔內(nèi)容的切入點(diǎn)了。

從前面的定義可以看到,這個(gè)metadata是一個(gè)RouteMetadata的實(shí)例

public class RouteMetadata{ ? ?
//Creates a new instance of the Nancy.Routing.RouteMetadata class.public RouteMetadata(IDictionary<Type, object> metadata); ?
?//Gets the raw metadata System.Collections.Generic.IDictionary`2.public IDictionary<Type, object> Raw { get; } ?
??//Gets a boolean that indicates if the specific type of metadata is stored.public bool Has<TMetadata>(); ? ?//Retrieves metadata of the provided type.public TMetadata Retrieve<TMetadata>(); }

這里對(duì)我們比較重要的是Raw這個(gè)屬性,因?yàn)檫@個(gè)是在返回結(jié)果中的一部分,它是一個(gè)字典,鍵是類型,值是這個(gè)類型對(duì)應(yīng)的實(shí)例。

先定義一個(gè)CustomRouteMetadata,用于返回路由的Metadata信息(可根據(jù)具體情況進(jìn)行相應(yīng)的定義)。這個(gè)CustomRouteMetadata就是上述字典Type。

public class CustomRouteMetadata{ ? ?// group by the modulepublic string Group { get; set; } ? ?// description of the apipublic string Description { get; set; } ? ?// path of the apipublic string Path { get; set; } ? ?// http method of the apipublic string Method { get; set; } ? ?// name of the apipublic string Name { get; set; } ? ?// segments of the apipublic IEnumerable<string> Segments { get; set; } }

定義好我們要顯示的東西后,自然要把這些東西用起來,才能體現(xiàn)它們的價(jià)值。

要用起來還涉及到一個(gè)MetadataModule,這個(gè)命名很像NancyModule,看上去都是一個(gè)Module。

先定義一個(gè)ProductsMetadataModule,讓它繼承MetadataModule<RouteMetadata>,
具體實(shí)現(xiàn)如下:

public class ProductsMetadataModule : MetadataModule<RouteMetadata> { ? ?public ProductsMetadataModule() ? ?{ ? ? ? ? ? ?Describe["GetProductList"] = desc =>{ ? ? ? ? ? ? ? ?var dic = new Dictionary<System.Type, object>{{ ? ? ? ? ? ? ?
? ? ?typeof(CustomRouteMetadata), ? ? ? ? ? ? ?
? ? ?? ? ?new CustomRouteMetadata{Group = "Products",Description = "Get All Products from Database",Path = desc.Path,Method = desc.Method,Name = desc.Name,Segments = desc.Segments}}}; ? ? ? ? ? ?return new RouteMetadata(dic);};Describe["GetProductByProductId"] = desc =>{ ? ? ? ?
? ? ?? ? ?? ?var dic = new Dictionary<System.Type, object>{{ ? ? ? ? ? ? ? ? ?
? ? ?? ? ? ?typeof(CustomRouteMetadata), ? ? ? ? ? ?
? ? ?? ? ? ? ? ? ? ?new CustomRouteMetadata{Group = "Products",Description = "Get a Product by product id",Path = desc.Path,Method = desc.Method,Name = desc.Name,Segments = desc.Segments}}}; ? ? ? ? ? ?return new RouteMetadata(dic); ? ? ? ? ? ? ?}; ? ? ? ?//省略部分...} }

這里的寫法就和1.x里寫NancyModule的內(nèi)容是一樣的,應(yīng)該也是比較熟悉的。就不再累贅了。其中的desc是一個(gè)委托Func<RouteDescription, TMetadata>。

默認(rèn)返回的是一個(gè)RouteMetadata實(shí)例,而要?jiǎng)?chuàng)建一個(gè)這樣的實(shí)例還需要一個(gè)字典,所以大家能看到上面的代碼中定義了一個(gè)字典。

并且這個(gè)字典包含了我們自己定義的信息,其中Group和Description是完全的自定義,其他的是從RouteDescription中拿。

當(dāng)然,這里已經(jīng)開了一個(gè)口子,想怎么定義都是可以的!

完成上面的代碼之后,再來看看我們顯示的結(jié)果

可以看到我們添加的metadata相關(guān)的內(nèi)容已經(jīng)出來了!可能這個(gè)時(shí)候,大家也都發(fā)現(xiàn)了,似乎內(nèi)容有那么點(diǎn)重復(fù)的意思!

因?yàn)檫@些重復(fù),就會(huì)讓人感覺這里比較臃腫,所以我們肯定不需要取出太多重復(fù)的東西,目前只需要metadata下面的這些就可以了。

下面來對(duì)其進(jìn)行簡化!

簡化一點(diǎn)的實(shí)現(xiàn)

簡化分為兩步:

第一步簡化:DocModule的簡化。

其實(shí),DocModule已經(jīng)是相當(dāng)?shù)暮唵瘟?#xff0c;但是還能在簡潔一點(diǎn)點(diǎn)。這里用到了RetrieveMetadata這個(gè)擴(kuò)展方法來處理。

前面的做法是拿到路由的信息后,用了兩個(gè)Select來查詢,而且查詢出來的結(jié)果有那么一點(diǎn)臃腫,

而借助擴(kuò)展方法,可以只取metadata里面的內(nèi)容,也就是前面自定義的內(nèi)容,這才是我們真正意義上要用到的。

下面是具體實(shí)現(xiàn)的示例:

Get("/", _ =>{//01//var routeDescriptionList = _routeCacheProvider// ? ? ? ? ? ? ? ? ? ? ? ? ? ?.GetCache()// ? ? ? ? ? ? ? ? ? ? ? ? ? ?.SelectMany(x => x.Value)// ? ? ? ? ? ? ? ? ? ? ? ? ? ?.Select(x => x.Item2)// ? ? ? ? ? ? ? ? ? ? ? ? ? ?.Where(x => !string.IsNullOrWhiteSpace(x.Name))// ? ? ? ? ? ? ? ? ? ? ? ? ? ?.ToList();//return Response.AsJson(routeDescriptionList);//02var routeDescriptionList = _routeCacheProvider.GetCache().RetrieveMetadata<RouteMetadata>().Where(x => x != null);return Response.AsJson(routeDescriptionList);});

經(jīng)過第一步簡化后,已經(jīng)過濾了不少重復(fù)的信息了,效果如下:

第二步簡化:Metadata的簡化

在返回Metadata的時(shí)候,我們是返回了一個(gè)默認(rèn)的RouteMetadata對(duì)象,這個(gè)對(duì)象相比自定義的CustomRouteMetadata復(fù)雜了不少

而且從上面經(jīng)過第一步簡化后的效果圖也可以發(fā)現(xiàn),只有value節(jié)點(diǎn)下面的內(nèi)容才是api文檔需要的內(nèi)容。

所以還要考慮用自定義的這個(gè)CustomRouteMetadata去代替原來的。

修改如下:

public class ProductsMetadataModule : MetadataModule<CustomRouteMetadata> { ? ?public ProductsMetadataModule() ? ?{Describe["GetProductList"] = desc =>{ ? ? ? ? ? ?return new CustomRouteMetadata{Group = "Products",Description = "Get All Products from Database",Path = desc.Path,Method = desc.Method,Name = desc.Name,Segments = desc.Segments};};Describe["GetProductByProductId"] = desc =>{ ? ? ? ? ? ?return new CustomRouteMetadata{Group = "Products",Description = "Get a Product by product id",Path = desc.Path,Method = desc.Method,Name = desc.Name,Segments = desc.Segments};}; ? ? ? ?//省略部分..} }

由于MetadataModule<TMetadata> 中的TMetadata是自定義的CustomRouteMetadata,所以在返回的時(shí)候直接創(chuàng)建一個(gè)簡單的實(shí)例即可

不需要像RouteMetadata那樣還要定義一個(gè)字典。

同時(shí),還要把DocModule中RetrieveMetadata的TMetadata也要替換成CustomRouteMetadata

var routeDescriptionList = _routeCacheProvider.GetCache() ? ? ? ? ? ? ? ? ? ? ? ? ? ?//.RetrieveMetadata<RouteMetadata>() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.RetrieveMetadata<CustomRouteMetadata>().Where(x => x != null);

經(jīng)過這兩步的簡化,現(xiàn)在得到的效果就是我們需要的結(jié)果了!

最后,當(dāng)然要專業(yè)一點(diǎn),不能讓人只看json吧!怎么都要添加一個(gè)html頁面,將這些信息展示出來:

當(dāng)然,現(xiàn)在看上去還是很丑,文檔內(nèi)容也并不豐富,但是已經(jīng)把最簡單的文檔做出來了,想要進(jìn)一步豐富它就可以自由發(fā)揮了。

實(shí)現(xiàn)探討

既然這樣簡單的代碼就能幫助我們?nèi)ド蒩pi文檔,很有必要去研究一下Nancy幫我們做了什么事!

從最開始的IRouteCacheProvider入手,這個(gè)接口對(duì)應(yīng)的默認(rèn)實(shí)現(xiàn)DefaultRouteCacheProvider

public class DefaultRouteCacheProvider : IRouteCacheProvider, IDiagnosticsProvider{ ?
?/// <summary>/// The route cache factory/// </summary>protected readonly Func<IRouteCache> RouteCacheFactory; ? ?/// <summary>/// Initializes a new instance of the DefaultRouteCacheProvider class./// </summary>/// <param name="routeCacheFactory"></param>public DefaultRouteCacheProvider(Func<IRouteCache> routeCacheFactory) ?
?
{ ? ? ? ?this.RouteCacheFactory = routeCacheFactory;} ? ?/// <summary>/// Gets an instance of the route cache./// </summary>/// <returns>An <see cref="IRouteCache"/> instance.</returns>public IRouteCache GetCache() ? ?{ ? ?
?? ?return this.RouteCacheFactory();} ? ?//省略部分..}

里面的GetCache方法是直接調(diào)用了定義的委托變量。最終是到了IRouteCache的實(shí)現(xiàn)類RouteCache,這個(gè)類算是一個(gè)重點(diǎn)觀察對(duì)象!

內(nèi)容有點(diǎn)多,就只貼出部分核心代碼了

它在構(gòu)造函數(shù)里去生成了路由的相關(guān)信息。

public RouteCache( ? ?INancyModuleCatalog moduleCatalog, ? ?INancyContextFactory contextFactory, ? ?IRouteSegmentExtractor routeSegmentExtractor, ? ?IRouteDescriptionProvider routeDescriptionProvider, ? ?ICultureService cultureService, ? ?IEnumerable<IRouteMetadataProvider> routeMetadataProviders){
? ?this.routeSegmentExtractor = routeSegmentExtractor; ?
? ??this.routeDescriptionProvider = routeDescriptionProvider; ?
? ???this.routeMetadataProviders = routeMetadataProviders; ?
? ????var request = new Request("GET", "/", "http"); ?
? ?????using (var context = contextFactory.Create(request)){ ? ? ? ?this.BuildCache(moduleCatalog.GetAllModules(context));} }

具體的生成方法如下:遍歷所有的NancyModule,找到每個(gè)Module的RouteDescription集合(一個(gè)Module可以包含多個(gè)路由)

然后找到每個(gè)RouteDescription的描述,路由片段和metadata的信息。最后把這個(gè)Module路由信息添加到當(dāng)前的對(duì)象中!

private void BuildCache(IEnumerable<INancyModule> modules){ ? ?

foreach (var module in modules){ ? ? ? ?var moduleType = module.GetType(); ? ?

? ?var routes =module.Routes.Select(r => r.Description).ToArray(); ? ?
? ? ? ?foreach (var routeDescription in routes){routeDescription.Description = this.routeDescriptionProvider.GetDescription(module, routeDescription.Path);routeDescription.Segments = this.routeSegmentExtractor.Extract(routeDescription.Path).ToArray();routeDescription.Metadata = this.GetRouteMetadata(module, routeDescription);} ? ? ? ?this.AddRoutesToCache(routes, moduleType);} }

前面提到RouteDescription的描述,路由片段和metadata的信息都是通過額外的方式拿到的,這里主要是拿metadata來做說明

畢竟在上面最后的一個(gè)例子中,用到的是metadata的內(nèi)容。

先調(diào)用定義的私有方法GetRouteMetadata,這個(gè)方法里面的內(nèi)容是不是和前面的MetadataModule有點(diǎn)類似呢,字典和創(chuàng)建RouteMetadata的實(shí)例。

private RouteMetadata GetRouteMetadata(INancyModule module, RouteDescription routeDescription){ ? ?var data = new Dictionary<Type, object>(); ? ?foreach (var provider in this.routeMetadataProviders){ ? ? ? ?var type = provider.GetMetadataType(module, routeDescription); ? ? ? ?var metadata = provider.GetMetadata(module, routeDescription); ? ? ? ?if (type != null && metadata != null){data.Add(type, metadata);}} ? ?return new RouteMetadata(data); }

重點(diǎn)的是provider。這個(gè)provider來源來IRouteMetadataProvider,這個(gè)接口就兩個(gè)方法。

Nancy這個(gè)項(xiàng)目中還有一個(gè)抽象類是繼承了這個(gè)接口的。但是這個(gè)抽象類是沒有默認(rèn)實(shí)現(xiàn)的。

public abstract class RouteMetadataProvider<TMetadata> : IRouteMetadataProvider{ ? ?

public Type GetMetadataType(INancyModule module, RouteDescription routeDescription) ?
?
{ ? ? ? ?return typeof(TMetadata);
?} ?
?public object GetMetadata(INancyModule module, RouteDescription routeDescription) ?
?
{ ? ?
?? ?return this.GetRouteMetadata(module, routeDescription);} ?
?? ? ?protected abstract TMetadata GetRouteMetadata(INancyModule module, RouteDescription routeDescription); }

注:前面的原理分析都是基于Nancy這個(gè)項(xiàng)目。

這個(gè)時(shí)候,另外一個(gè)項(xiàng)目Nancy.Metadata.Modules就起作用了。我們編寫的MetadataModule也是要添加這個(gè)的引用才能正常使用的。

從上面編寫的MetadataModule可以看出這個(gè)項(xiàng)目的起點(diǎn)應(yīng)該是MetadataModule,而且有關(guān)metadata的核心也在這里了。

public abstract class MetadataModule<TMetadata> : IMetadataModule where TMetadata :
class{ ?
?private readonly IDictionary<string, Func<RouteDescription, TMetadata>> metadata; ?
??protected MetadataModule() ?
?
{ ? ?
??? ?this.metadata = new Dictionary<string, Func<RouteDescription, TMetadata>>();} ?
?// Gets <see cref="RouteMetadataBuilder"/> for describing routes.public RouteMetadataBuilder Describe{ ? ? ? ?get { return new RouteMetadataBuilder(this); }} ?
?// Returns metadata for the given RouteDescription.public object GetMetadata(RouteDescription description) ?
?
{ ? ?
? ?if (this.metadata.ContainsKey(description.Name)){ ? ? ? ?
? ? ? ?return this.metadata[description.Name].Invoke(description);} ? ? ? ?return null;} ? ?// Helper class for configuring a route metadata handler in a module.public class RouteMetadataBuilder{ ? ? ? ?private readonly MetadataModule<TMetadata> parentModule; ?
? ? ? ?
? ? ? ?public RouteMetadataBuilder(MetadataModule<TMetadata> metadataModule) ? ?
? ?
{ ? ? ? ? ? ?this.parentModule = metadataModule;} ?
? ? ? ?// Describes metadata for a route with the specified name.public Func<RouteDescription, TMetadata> this[string name]{ ? ? ? ?
? ? ? ?? ?set { this.AddRouteMetadata(name, value); }} ? ? ?
? ? ? ?? ?
? ??protected void AddRouteMetadata(string name, Func<RouteDescription, TMetadata> value) ? ? ? ?{ ? ? ? ? ? ?this.parentModule.metadata.Add(name, value);}} ? ?//省略部分..}

到這里,已經(jīng)將GetCache的內(nèi)內(nèi)外外都簡單分析了一下。至于擴(kuò)展方法RetrieveMetadata就不在細(xì)說了,只是selectmany和select的一層封裝。

寫在最后

本文粗略講解了如何在Nancy中生成API文檔,以及簡單分析了其內(nèi)部的處理。

下一篇將繼續(xù)介紹這一塊的內(nèi)容,不過主角是Swagger。

原文地址:http://www.cnblogs.com/catcher1994/p/6791352.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注

總結(jié)

以上是生活随笔為你收集整理的浅析如何在Nancy中生成API文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

99精品黄色片免费大全 | 日韩欧美视频在线 | 丁香婷婷基地 | 不卡的av | 久久久免费视频播放 | 国产美女在线免费观看 | 91精品国产综合久久福利 | 精品久久网 | 欧美亚洲免费在线一区 | a久久久久 | 国产精品久久久久久久久久久久久久 | 97在线视频观看 | 日韩免费在线视频观看 | 国产一级片免费播放 | 麻豆免费在线视频 | 国产伦理剧 | 中文字幕观看在线 | 免费av试看 | 中文永久字幕 | 亚洲精品视频中文字幕 | 天天爱综合 | 欧美国产日韩一区二区三区 | 碰超在线97人人 | 国产精品一区二区三区在线播放 | 美女免费视频一区 | 久久99久久99 | 超碰97中文| 四虎亚洲精品 | 国产精品99久久免费黑人 | 日本bbbb摸bbbb | 狠狠干婷婷色 | 亚洲麻豆精品 | 九九热精品国产 | 国产成人在线免费观看 | 美女网站视频免费黄 | 日韩在线观看电影 | 最近免费中文字幕mv在线视频3 | 久久毛片网 | 国内揄拍国产精品 | 天天干天天想 | 日韩在线观看视频中文字幕 | 国语自产偷拍精品视频偷 | 久久伊99综合婷婷久久伊 | 日韩试看 | 久草在线免费资源站 | 九九热在线视频免费观看 | 国产视频久 | 亚州av成人 | 51久久成人国产精品麻豆 | 免费视频网| 视频在线99 | 天天爱综合 | 中文字幕色网站 | 欧美一二三专区 | 久久久精品国产一区二区三区 | 最近中文字幕在线 | 久草综合视频 | 六月丁香激情网 | 免费高清av在线看 | 国产精品h在线观看 | 天天射天天干天天 | 国产成人福利在线观看 | 黄色片免费看 | 中文字幕亚洲欧美日韩2019 | 激情片av | 超级碰碰免费视频 | 中文字幕免费观看全部电影 | 免费精品人在线二线三线 | 国产亚洲亚洲 | 人人插人人搞 | 97成人在线 | 欧美成人播放 | 日韩av不卡在线观看 | 国产免费一区二区三区网站免费 | 欧美日韩一区二区在线观看 | 亚洲黄色在线观看 | 999久久久免费视频 午夜国产在线观看 | 99超碰在线观看 | 国产精品男女 | 麻豆传媒电影在线观看 | 成人国产精品免费观看 | 91在线91拍拍在线91 | 亚洲欧美国内爽妇网 | av一级在线 | 天天色天天上天天操 | 日韩在线免费播放 | 亚洲国产三级在线 | 黄色av网站在线观看免费 | 激情五月开心 | 在线免费性生活片 | 成人黄色小说网 | 丁香六月在线 | 激情综合色播五月 | 探花视频免费观看 | 91爱在线| 久久人人干| 一区二区在线不卡 | 九九一级片 | 久影院 | 日韩免费福利 | 人人干免费 | 日韩色综合网 | 白丝av在线 | 中午字幕在线观看 | 婷婷激情综合五月天 | 在线精品播放 | 中文字幕精品一区二区三区电影 | 亚洲国产成人在线观看 | 国产精品二区在线观看 | 欧美另类调教 | av日韩av | 日韩免费观看一区二区三区 | 国产美腿白丝袜足在线av | 黄色亚洲免费 | 国产精品日韩在线 | 日韩精品欧美专区 | 亚洲一区二区三区四区精品 | 欧美一区在线观看视频 | 丁香在线观看完整电影视频 | 日韩在线视频一区二区三区 | 国产视 | 久久久久亚洲精品男人的天堂 | 黄色一级在线免费观看 | 久久免费视频1 | 免费日韩一区二区 | 国产亚洲成人精品 | 亚洲成年片 | 在线视频欧美日韩 | 亚洲综合激情小说 | 日韩精品视频在线免费观看 | 日韩免费 | 天天插日日射 | 久草在线免 | 久久久久 免费视频 | 99re亚洲国产精品 | 国产精品久久人 | 亚洲免费av在线 | 日韩激情小视频 | 久久久午夜影院 | 最近日韩免费视频 | 色开心| 啪啪肉肉污av国网站 | 天天天天天天干 | 欧美视频日韩视频 | 亚洲无毛专区 | 亚洲欧洲av在线 | 日本三级中文字幕在线观看 | 天天想夜夜操 | 黄色一级大片在线观看 | 91丨九色丨高潮丰满 | 久精品视频在线观看 | 精品久久久久久一区二区里番 | 国产小视频在线观看 | 欧美一级片播放 | 国产91探花 | 久久精品久久精品久久精品 | 国产精品一区二区你懂的 | 91干干干 | 欧美精品国产综合久久 | 999久久精品 | 国产成人福利在线观看 | 久久久久久久国产精品影院 | 有码中文字幕在线观看 | 婷婷在线资源 | 99re亚洲国产精品 | 天堂av观看 | 国产在线 一区二区三区 | 国产视频一| 欧美一级专区免费大片 | 国产中文字幕在线观看 | 国产精品黑丝在线观看 | 日韩偷拍精品 | 久久国产精品99精国产 | 国产在线中文字幕 | 日韩精品久久一区二区三区 | 少妇18xxxx性xxxx片 | 九九欧美视频 | 国产一级片毛片 | 色99视频| 国产一二三四在线观看视频 | 91成人在线观看喷潮 | 国产亚洲视频在线 | 99精品成人| 国产亚洲精品久久久久久久久久 | 国产免费人成xvideos视频 | 久草在线视频免赞 | 国精产品一二三线999 | 91在线观看视频网站 | 69久久久 | 天天爱天天射 | a视频在线| 毛片在线网 | 一区二区三区动漫 | 久久久精品国产一区二区三区 | 国产美女视频免费观看的网站 | 国产激情电影综合在线看 | 天天艹天天干天天 | 日韩av福利在线 | 欧美精品小视频 | 国产区精品 | 久草视频在线播放 | 天天综合网天天综合色 | 99视频精品 | 欧美性猛片 | 亚洲人毛片 | a在线v| av中文字幕亚洲 | 久久久精品网 | 国产日韩欧美网站 | 亚洲不卡123 | 免费在线观看日韩视频 | 亚洲天堂网在线播放 | 精品国产乱码久久久久久天美 | 91精品婷婷国产综合久久蝌蚪 | 国内精品久久天天躁人人爽 | 亚洲欧美怡红院 | 亚洲精品成人 | 九九视频精品在线 | 二区三区中文字幕 | 欧美黑人xxxx猛性大交 | 日韩精品五月天 | 91激情视频在线播放 | 国产亚洲精品久久久久久电影 | 日韩精品中文字幕在线观看 | 久久免费视频这里只有精品 | 成人91在线观看 | 国产精品久久久久永久免费观看 | 亚洲综合成人专区片 | 精品国产成人av | 中文字幕av全部资源www中文字幕在线观看 | 奇米影视777影音先锋 | 久久艹综合| 国产精成人品免费观看 | 国产黄色精品在线 | 69av久久| 国产视频在线一区二区 | 亚洲精品美女久久 | 亚洲精品视频免费观看 | 久久视频这里有久久精品视频11 | 91精品中文字幕 | 国产在线色 | 欧美一级特黄aaaaaa大片在线观看 | 亚洲91视频 | 欧美嫩草影院 | 免费在线播放av电影 | 欧美孕交vivoestv另类 | 人人射网站 | 色88久久| 人人爽爽人人 | 国产成人精品一区二区三区福利 | 国产精品久久电影网 | 亚洲免费av网站 | 波多野结衣资源 | 国产精品黄 | 精品久久网| 亚洲动漫在线观看 | 99精品在线播放 | 亚洲va欧美va | 欧美一二三视频 | 欧美日韩亚洲在线观看 | 人人爽人人插 | 91激情视频在线观看 | 久草电影网 | 精品国产欧美一区二区 | 久久无码av一区二区三区电影网 | 久久激情小视频 | 天天久久综合 | 亚洲精品在线资源 | 久久国产精品99久久久久 | 日韩精品中文字幕久久臀 | 97在线精品国自产拍中文 | 欧美一级大片在线观看 | 亚洲精品国产精品国产 | 日本公妇在线观看高清 | 天天综合狠狠精品 | 精品久久久久一区二区国产 | 色婷婷狠狠18 | 99久久超碰中文字幕伊人 | 国产色综合| 99精品免费在线 | 天天射综合网视频 | 丝袜美腿在线视频 | 黄色午夜网站 | 国产小视频91 | 亚洲欧美激情精品一区二区 | 久久精品成人热国产成 | 韩国视频一区二区三区 | 久久伦理 | 日韩精品一区二区三区在线视频 | 福利视频网站 | 色99视频| 精选久久| 中文字幕一区二区三区乱码不卡 | 九九九电影免费看 | 日韩城人在线 | 日韩动漫免费观看高清完整版在线观看 | 91禁在线看 | 高清不卡毛片 | 91九色精品 | 亚洲天堂网在线播放 | 日韩高清www| 热久久99这里有精品 | 超碰在线98 | 日本精品在线视频 | 狠狠色丁婷婷日日 | 欧美日韩另类在线 | 国产91在线免费视频 | av不卡网站 | 日韩久久精品一区二区 | 在线探花 | 中文字幕一区二区三区四区久久 | 亚洲精品白浆高清久久久久久 | 最新av网站在线观看 | 天天曰| 欧美日韩亚洲在线 | 国产一卡二卡四卡国 | 五月婷婷伊人网 | 国产一级不卡视频 | 狠狠狠狠狠狠狠狠干 | 一二区电影 | 黄色日批网站 | 久久男人影院 | 99热官网| 五月婷婷色播 | 亚洲伊人成综合网 | 成人久久久久久久久久 | av久久在线| 伊人欧美 | 97视频久久久 | 久久综合射 | 亚洲欧美婷婷六月色综合 | 国偷自产中文字幕亚洲手机在线 | 成人在线视频一区 | 午夜在线免费观看 | a天堂免费 | 在线观看免费观看在线91 | 国产大尺度视频 | 夜夜高潮夜夜爽国产伦精品 | 亚洲h视频在线 | 久久成人欧美 | 玖玖爱免费视频 | 久久久久成人精品免费播放动漫 | 国产亚洲精品成人 | 日本三级不卡 | 久久久久这里只有精品 | 天天操夜夜操 | 日本三级在线观看中文字 | 中文字幕中文字幕中文字幕 | 97超碰免费在线观看 | 国产精品一区免费在线观看 | 国产一区欧美日韩 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产精品免费在线观看视频 | 久久私人影院 | 五月婷婷六月丁香 | 在线观看完整版免费 | 中文字幕在线免费观看视频 | 亚洲欧美日本一区二区三区 | 黄色免费观看 | 91免费网址| 久久久久久久久久久福利 | 国产69精品久久久久久 | av三级在线看 | 国产精品午夜久久 | 五月天最新网址 | 国产视频不卡 | 伊人天堂久久 | 久久综合给合久久狠狠色 | 丁香久久婷婷 | 91在线看黄| 欧美影片| 在线亚洲成人 | 夜色资源站国产www在线视频 | 欧美精品在线观看 | 国产高清网站 | 久草视频免费 | 国产成人av片| 国产中文字幕精品 | 五月婷视频 | 一区二区观看 | 亚洲欧美国产日韩在线观看 | 午夜久久福利视频 | 欧美怡红院 | 99热最新网址 | 免费看片成人 | 99精品国产99久久久久久福利 | 欧美日韩3p| 久久国产一区二区 | av不卡中文 | 五月天狠狠操 | 一区二区高清在线 | av电影不卡| 99这里都是精品 | 五月香婷 | 国产午夜视频在线观看 | 亚洲婷婷综合色高清在线 | 99久久9| 精品久久久久久一区二区里番 | 久久久久久久国产精品 | 在线观看的黄色 | 狠狠色网 | 欧美精品一级视频 | 日韩精品中文字幕在线不卡尤物 | 一色av| 欧美激情精品久久久久久 | 国产精品99久久久久的智能播放 | 欧美一级特黄aaaaaa大片在线观看 | 91在线免费看片 | 欧美a√大片 | 91精品视频在线观看免费 | 欧美伦理一区二区三区 | 精品国产电影一区二区 | 久久久久亚洲最大xxxx | 国产成人精品久久二区二区 | 中文字幕在线影院 | 在线观看va| 成人国产精品av | 亚洲精品日韩一区二区电影 | 日本中文字幕视频 | 国产精品永久免费观看 | 99这里都是精品 | 久久精品高清视频 | 久久r精品 | 男女免费av | 中文字幕av影院 | 亚洲激情视频 | 久久这里精品视频 | 国产精品免费一区二区三区 | 日韩a在线播放 | 99视频一区二区 | 97在线看 | 91精品在线视频观看 | 色综合天天综合 | 人人舔人人爽 | 中字幕视频在线永久在线观看免费 | 手机看片国产日韩 | av免费在线免费观看 | 超级碰碰碰碰 | 黄色一级在线免费观看 | 超级碰碰碰碰 | 国产中文字幕91 | 色资源网免费观看视频 | 精品久久一级片 | 韩国av免费看 | 蜜臀久久99精品久久久久久网站 | 婷婷深爱激情 | 中文字幕字幕中文 | 国产精品黄网站在线观看 | 最近免费在线观看 | 国产美女视频免费观看的网站 | 成人免费观看在线视频 | 中国黄色一级大片 | 在线免费观看av网站 | 国产麻豆成人传媒免费观看 | 久久国产免费 | 18pao国产成视频永久免费 | 9在线观看免费高清完整 | 久久亚洲在线 | 亚洲国产高清在线观看视频 | 中文字幕乱视频 | 天天干视频在线 | 91黄色小网站 | 99视频精品| 2019中文最近的2019中文在线 | 国产精品久久久久毛片大屁完整版 | 在线观看一区视频 | 日韩理论在线播放 | 天天操天天综合网 | 亚洲一区网 | 亚洲精品福利在线观看 | av片在线观看 | 免费网站色 | 亚洲在线视频观看 | 狠狠狠色丁香婷婷综合久久五月 | 一区 在线 影院 | 成人午夜免费剧场 | 在线激情网 | 久久国产精品99国产精 | 91久久久久久国产精品 | 国产麻豆剧果冻传媒视频播放量 | 狠狠干天天色 | 成人观看视频 | 久草精品视频 | 国产手机视频在线播放 | 天堂av免费看 | 日本久久成人中文字幕电影 | 91黄在线看| 高潮久久久久久 | 69av免费视频 | 中文字幕色站 | 国产精品亚洲片在线播放 | 国产涩图 | 亚洲天堂毛片 | 日韩艹 | 亚洲小视频在线 | 亚洲最新视频在线播放 | av中文字幕网站 | 成人免费观看网站 | 黄网站免费看 | 8x成人免费视频 | 综合天天 | 久草9视频| 成人亚洲免费 | 亚洲 欧洲av | 久久综合射 | 美女视频免费精品 | 香蕉久久久久 | 亚洲综合视频在线 | 天天操天天曰 | 亚洲人成在线电影 | 婷婷五天天在线视频 | 五月婷婷色播 | 玖草影院| 日韩高清成人 | 日韩中文字幕在线不卡 | 激情开心站| 午夜手机电影 | 日韩二区在线播放 | 91在线免费观看国产 | 中文国产字幕在线观看 | 园产精品久久久久久久7电影 | 91视频久久久久久 | 欧美性色黄 | ww视频在线观看 | 又色又爽的网站 | 久久免费视频这里只有精品 | 国产精品高清av | 日本aa在线 | 国产高清日韩欧美 | 精品久久久久久久久久久久久久久久 | www视频在线免费观看 | 久草网视频 | 玖玖玖国产精品 | 一级黄色片毛片 | 久久久久人人 | 天天综合网久久综合网 | 久草在线资源观看 | 久久99国产一区二区三区 | 中文国产在线观看 | 激情网站免费观看 | 欧美坐爱视频 | 久久综合精品国产一区二区三区 | 在线亚洲人成电影网站色www | 久久天堂网站 | 在线观看色网站 | 香蕉网在线播放 | 久要激情网| 免费午夜在线视频 | 欧美做受xxx | 91av在线视频免费观看 | www久久com| 色综合天天射 | 国产黄色片免费看 | 久久精品日韩 | 精品在线一区二区 | 97国产情侣爱久久免费观看 | 国产区精品区 | 欧美在线不卡一区 | 日韩,精品电影 | 久久久久久免费网 | 91看片淫黄大片在线播放 | 中午字幕在线 | 久久久国产精品视频 | 9在线观看免费高清完整 | 97成人精品 | 久久一级片| 精品国产1区二区 | 99色在线观看 | 天天色天天射天天操 | 亚洲精品国产精品国产 | 99热免费在线 | 九月婷婷人人澡人人添人人爽 | 国产精品观看视频 | 天天爽天天射 | 精品一区在线看 | 久久精品视频在线看 | 国产中出在线观看 | 国产一级免费片 | 夜夜躁日日躁狠狠久久88av | 欧美精品亚洲精品 | 中文字幕在线视频国产 | 日日日日| 狠狠干2018 | 深爱五月网 | 国产美女永久免费 | 久久精彩免费视频 | 国产色在线,com | 国产99久久九九精品免费 | av成人免费观看 | 99精彩视频在线观看免费 | 在线激情电影 | www视频在线播放 | 99视频精品免费视频 | 又爽又黄在线观看 | 麻豆91小视频 | 国产群p视频 | 精品久久久久久亚洲综合网 | 免费在线观看污网站 | 特级大胆西西4444www | 狠狠干狠狠艹 | 欧美成人h版电影 | 亚洲在线视频播放 | 日韩中文字幕免费电影 | 丁香综合激情 | 99精品视频在线播放观看 | 久久久久成人精品免费播放动漫 | 在线国产欧美 | 天天玩天天干 | 欧美激情综合五月色丁香 | 亚洲欧美日本国产 | 97超碰在 | 久久电影中文字幕视频 | 免费黄色a级毛片 | 五月天久久久久 | 在线之家免费在线观看电影 | 精品理论片 | 亚洲丁香久久久 | 在线 欧美 日韩 | 久久成人国产精品一区二区 | 91av视频导航 | 国产啊v在线观看 | 日韩精品免费专区 | 久久免费黄色网址 | 狠狠色2019综合网 | 91精品国产亚洲 | 亚洲激情p| 午夜精品在线看 | 免费亚洲成人 | 91精品国产乱码 | 国产一级片观看 | 黄色毛片在线观看 | 亚洲aaa毛片 | 日韩欧美一区二区不卡 | 亚洲国产精品成人va在线观看 | av九九 | 91高清免费观看 | 欧美激情亚洲综合 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 亚洲综合成人av | 亚洲黄色av网址 | 中文字幕无吗 | 欧美日韩中文在线 | 色偷偷97| 日韩一级黄色大片 | 精品一区二区6 | 亚洲国产精品一区二区久久,亚洲午夜 | 精品麻豆| 欧美激情第一区 | 亚洲综合婷婷 | av电影免费在线播放 | 久久99国产精品久久99 | 在线观看国产亚洲 | 国产精品欧美久久久久三级 | 婷婷综合电影 | 亚洲综合视频在线 | 香蕉视频在线免费 | 久久久久99精品成人片三人毛片 | 在线观看日韩视频 | 国产成人精品一区二区三区网站观看 | 国产精品亚洲人在线观看 | 草久视频在线观看 | 欧美日bb| 97视频免费观看 | 天天操天天玩 | 精品国产精品久久 | 伊人国产在线观看 | 国产涩涩在线观看 | 波多野结衣一区二区三区中文字幕 | 三级a视频| 亚洲经典在线 | 97超碰人人模人人人爽人人爱 | 99视频精品全国免费 | 成人国产精品久久久久久亚洲 | 在线免费观看黄网站 | 成人在线观看日韩 | 国产二级视频 | 免费黄色一区 | 97av视频在线观看 | 又黄又爽又无遮挡免费的网站 | 国产小视频你懂的在线 | 丝袜足交在线 | 成人黄色片免费看 | 国产精品热视频 | 一级一级一片免费 | 成人97人人超碰人人99 | 区一区二区三在线观看 | 亚洲综合色av | 超碰97在线资源站 | 天天夜夜操 | 91大神精品视频在线观看 | 色噜噜在线观看视频 | 99色在线观看视频 | 美女一级毛片视频 | 久久在线免费视频 | 在线天堂v| 在线观看中文字幕亚洲 | 欧美一区二区精品在线 | 欧美福利精品 | 青青草国产免费 | 亚洲视屏 | 国产无遮挡又黄又爽馒头漫画 | 国产成人三级一区二区在线观看一 | 天天摸夜夜操 | 日韩精品一区二区电影 | 欧美日韩在线播放 | 日韩精品一区二区三区免费视频观看 | 日韩久久电影 | 国产美女视频网站 | 黄色在线看网站 | 字幕网av| 日黄网站 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 一区二区三区在线不卡 | 久久久久欧美精品 | 欧美日韩免费网站 | 成人免费在线电影 | 这里只有精彩视频 | 久久久www成人免费毛片 | 伊人伊成久久人综合网小说 | 99久久精品免费看国产四区 | 一区二区三区四区久久 | 日韩精品一区二区三区在线播放 | 国产成人综合在线观看 | 免费久久久久久 | 男女日麻批| 亚洲激情校园春色 | 国产高清视频色在线www | 97在线视频免费看 | 黄色成年 | 91大神精品视频在线观看 | 西西444www大胆高清图片 | 九九热免费在线视频 | 欧美小视频在线观看 | 人人澡人人爱 | 四虎影视国产精品免费久久 | 日韩免费av网址 | 日韩视 | 日韩av一区二区三区四区 | 久99久视频 | 亚洲欧洲精品一区二区精品久久久 | 国产福利一区二区三区在线观看 | 黄色aa久久 | 色综合久久五月 | 精壮的侍卫呻吟h | 天天射,天天干 | 亚洲精品久久在线 | 欧美午夜精品久久久久 | 亚洲免费在线视频 | 天天色成人网 | 91成人午夜 | 亚洲欧美视频在线播放 | 天天操天天射天天爱 | 日韩电影一区二区三区在线观看 | 96在线| 中文字幕色婷婷在线视频 | 欧美一区二区三区激情视频 | 男女全黄一级一级高潮免费看 | 国产伦精品一区二区三区高清 | 91视频在线播放视频 | 三级黄色a | 四虎永久精品在线 | www天天干com | 国产精品21区 | 日韩乱理 | av网站免费线看精品 | 国产不卡视频在线 | 丁香视频在线观看 | 天天操天天操天天操天天 | 中文字幕亚洲欧美日韩 | 久久av观看 | 九九久久视频 | 伊人亚洲精品 | 日韩在线免费播放 | 国产精品视频不卡 | 国产一区二区在线免费 | 精品国产aⅴ一区二区三区 在线直播av | 欧美精品在线一区 | 91在线资源 | www国产亚洲精品久久网站 | 国产精品久久伊人 | 中文av影院| 日日日天天天 | 99久e精品热线免费 99国产精品久久久久久久久久 | 欧美精品久久久久久久久久白贞 | 福利av影院| 日本久久久久久 | 黄网站色视频免费观看 | 久久久69| 手机成人在线 | 日韩免费专区 | 最新超碰在线 | 亚洲国产精品推荐 | 国产午夜在线观看视频 | 99久久婷婷国产综合精品 | 亚洲码国产日韩欧美高潮在线播放 | 成人国产电影在线观看 | 成人黄色在线 | 日韩在线观看网站 | 国产欧美日韩精品一区二区免费 | www.大网伊人 | 久久精品系列 | 成人av网站在线观看 | 天天爽综合网 | 国产又粗又猛又黄又爽 | av不卡免费看 | 91看毛片| 97国产精品免费 | 日韩欧美精品免费 | 国产精品免费在线视频 | 国产精品久久久久久爽爽爽 | 最新午夜 | 中国一级特黄毛片大片久久 | 狠狠色丁香 | 免费毛片一区二区三区久久久 | 日韩午夜视频在线观看 | 一级黄色片在线 | 婷婷在线免费观看 | 超碰av在线播放 | 成人av电影在线播放 | 国产天天爽 | 久久精品视频免费观看 | 91天天视频 | 国产精品成人a免费观看 | 久久精品国产一区二区 | 天天操天天操天天操天天操 | 91尤物在线播放 | 国产九九九精品视频 | 久久久久国产一区二区 | 欧美日韩国产综合网 | 久久综合色天天久久综合图片 | 五月婷婷在线播放 | 狠狠干狠狠艹 | 天天干天天插 | 国产亚洲精品久久 | 又黄又爽又无遮挡免费的网站 | 免费黄av| 久久精品久久久精品美女 | 中文字幕91在线 | 中文在线中文资源 | av一本久道久久波多野结衣 | 国产999精品视频 | 视频成人免费 | 97碰在线 | 97超碰在线资源 | 久久综合之合合综合久久 | 国产精品嫩草影视久久久 | 夜夜夜夜爽 | 狠狠操91| 国产中文字幕av | 在线观看岛国 | 久热精品国产 | 久久久久久毛片精品免费不卡 | 国产精品观看在线亚洲人成网 | 黄色av网站在线观看 | 久久九九视频 | 日韩中字在线 | 日韩精品一区二区三区中文字幕 | 日韩一区在线免费观看 | 玖玖视频 | 国产日产高清dvd碟片 | 狠狠色丁香久久婷婷综合丁香 | 午夜精品视频免费在线观看 | 久久久久久黄 | 久久国产露脸精品国产 | 激情综合网婷婷 | 日韩视频在线不卡 | 日韩电影一区二区在线 | 国产成人一区二区三区在线观看 | 久久人人爽人人爽人人 | 久久国产精品视频免费看 | www.午夜视频 | 久久一区国产 | 成人99免费视频 | 99久久精品国产观看 | 天天射天天干天天插 | 在线播放 日韩专区 | 国产成人久 | 国产精品国内免费一区二区三区 | 91手机视频| 国产一区 在线播放 | 国产九九九视频 | 色视频在线免费观看 | 亚洲午夜av | 中文字幕亚洲国产 | 国产传媒一区在线 | 丰满少妇久久久 | 国产精品日韩久久久久 | 99一区二区三区 | 色丁香婷婷 | 久综合网 | 色中射 | 狠狠色丁香久久婷婷综 | 日韩精品一区二区三区高清免费 | 综合伊人久久 | 欧美性脚交| 久久免费的视频 | 国产女教师精品久久av | 欧美精品小视频 | 久久久精品 | 久久精品这里都是精品 | 欧美激情视频一区 | 久久久久久激情 | 亚洲日本成人网 | 久久亚洲精品国产亚洲老地址 | 国产又粗又猛又黄视频 | 黄色免费观看视频 | 成人毛片a | 人人狠狠| 免费av电影网站 | 日韩久久精品 | 色婷婷av在线 | 亚洲狠狠 | 黄色com | 六月丁香激情综合 | 日韩中文在线电影 | 日韩精品一区二区三区免费视频观看 | 国产福利一区二区三区在线观看 | 亚洲精品视频在线观看免费视频 | 天天色天天综合网 | 久久首页| 在线国产不卡 | 久久久影院一区二区三区 | 人人爱人人添 | 日韩电影中文字幕在线观看 | 欧美一级日韩三级 | 欧美一级乱黄 | 亚洲色图 校园春色 | 天天干夜夜爽 | av在线网站免费观看 | 国产精品视频久久 | 色综合天天 | 国产一级片播放 | 午夜精品久久久久久久久久久 | 日韩精品一区二区在线视频 | 四虎在线观看 | 成人精品一区二区三区中文字幕 | 日日夜夜精品视频天天综合网 | 亚洲精品视频在线观看网站 | av电影在线免费 | www五月天婷婷 | 日韩欧美黄色网址 | 92精品国产成人观看免费 | 中文字幕在 | 色婷婷av国产精品 | 五月天色网站 | 91精品婷婷国产综合久久蝌蚪 | 99在线观看免费视频精品观看 | 国产亚洲精品久久19p | 一区二区三区免费在线播放 | 五月婷婷六月丁香 | 国产精品成人aaaaa网站 | 久久激情视频免费观看 | 黄色aa久久| 久久99热国产 | 亚洲精品国产精品国自产 | 九九一级片 | 91日韩免费 | www.久久久久 | 色资源二区在线视频 | 亚洲精品视频在线观看视频 | 日本护士撒尿xxxx18 | 国产高清亚洲 | 91视频网址入口 | 在线精品视频免费播放 | 日韩精品中文字幕在线不卡尤物 | 99精品欧美一区二区蜜桃免费 | 国产精品久久久久久久久久白浆 | 欧美日韩3p | 色狠狠综合 | 日韩二区在线 | 91色视频| 国产黄色资源 | 97超碰中文 | www黄色av | 国产伦精品一区二区三区无广告 | 久久亚洲美女 | 五月天久久狠狠 | 啪啪免费视频网站 | 欧美日韩3p| 日批视频在线观看免费 | 91豆麻精品91久久久久久 | 国产流白浆高潮在线观看 | 精品久久影院 | av在线播放亚洲 | 久久经典国产视频 | 岛国av在线| 天天综合导航 | 精品亚洲午夜久久久久91 | 欧美久久电影 | 天天干天天操天天爱 | av久久久| 蜜桃麻豆www久久囤产精品 | 欧美一级黄色片 | 日韩欧美在线不卡 | 国内少妇自拍视频一区 | 国产伦精品一区二区三区四区视频 | 婷婷福利影院 | 一区二区三区免费在线观看视频 |