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

如何使用Feathers.js和SQLite構(gòu)建REST API

譯文 精選
開發(fā) 開發(fā)工具
本文將教你如何使用像 Arctype、Feather.js 和 SQLite 這樣的工具來(lái)構(gòu)建 REST API 和一個(gè)可用于生產(chǎn)的應(yīng)用程序原型。

譯者 | 盧鑫旺

審校 | 孫淑娟

你是否正在尋找一種方法來(lái)構(gòu)建具有身份驗(yàn)證、數(shù)據(jù)庫(kù)設(shè)置和授權(quán)等特性的Web應(yīng)用程序,而無(wú)需編寫大量的代碼和配置?你是否想在幾天內(nèi)創(chuàng)建一個(gè)可用于生產(chǎn)的應(yīng)用程序?信不信由你,這是可能的!本教程將向你展示如何使用Feathers.js在幾分鐘內(nèi)創(chuàng)建一個(gè)REST API。我們將學(xué)習(xí)如何使用Feathers.js實(shí)現(xiàn)一個(gè)示例API,并分享一些想法和注意事項(xiàng)。

1.什么是Feathers.js?

Feathers.js是一個(gè)輕量級(jí)的Web框架,用于使用JavaScript或TypeScript開發(fā)實(shí)時(shí)應(yīng)用和REST API。

Feathers.js可以與任何后端技術(shù)進(jìn)行交互,支持十多個(gè)數(shù)據(jù)庫(kù),還可以與任何前端技術(shù)一起工作,比如React、VueJS、Angular和React Native。

Feathers.js以其易用性、交付速度和豐富文檔而聞名。對(duì)于Feathers,你只需要運(yùn)行一個(gè)簡(jiǎn)單的命令就可以添加一個(gè)特性。

2.知識(shí)預(yù)備

本教程是一個(gè)實(shí)際操作的演示。首先,你要做如下準(zhǔn)備:

  • 安裝Node.js
  • 安裝Arctype
  • 安裝Insomnia
  • 熟悉Node.js和Express.js

3.我們將要構(gòu)建什么

你將創(chuàng)建一個(gè)電影租賃應(yīng)用程序來(lái)演示Feathers.js和Arctype數(shù)據(jù)庫(kù)可視化工具的功能。管理員將在這個(gè)程序中生成電影,通過(guò)身份驗(yàn)證的用戶將能夠租用它們。你將學(xué)習(xí)使用Sequelize關(guān)聯(lián)feather .js中的表,限制訪問特定的路由,并將數(shù)據(jù)庫(kù)鏈接到Arctype。

4.準(zhǔn)備開始

首先,打開命令行界面,用下面的命令為本教程創(chuàng)建一個(gè)文件夾:

npm install @feathersjs/feathers --save

等待安裝完成,并使用下面的命令確認(rèn)是否安裝成功:

feathers -V

如果安裝過(guò)程一切順利,你將在控制臺(tái)上看到打印出來(lái)的版本號(hào)。

5.創(chuàng)建一個(gè)應(yīng)用

在安裝好Feather.js后,使用下面的命令為此應(yīng)用程序創(chuàng)建一個(gè)文件夾:

Mkdir RestWithFeathers && RestWithFeathers

然后,使用下面的命令生成一個(gè)新的API應(yīng)用程序:

feathers generate app

上面的命令將提示你為應(yīng)用程序選擇配置。對(duì)于本教程中的演示,你的選擇應(yīng)該如下面的截圖所示:

圖片

在上面的截圖中,我們做了如下的選擇:

  • 首選編程語(yǔ)言為Javascript
  • 指定應(yīng)用程序的名稱(movie-rental)
  • 選擇src作為項(xiàng)目樣板文件的位置
  • 選擇npm作為包管理工具
  • 啟用用戶身份驗(yàn)證
  • 選擇使用Eslint分析我們的代碼
  • 選擇用戶名和密碼身份驗(yàn)證策略
  • 選擇user作為實(shí)體的名稱
  • 選擇Sequelize作為應(yīng)用的ORM
  • 選擇SQLlite作為我們的數(shù)據(jù)庫(kù)
  • 指定數(shù)據(jù)庫(kù)名稱為movieDB

一旦選擇完成,該命令將生成一個(gè)類似Express.js風(fēng)格的項(xiàng)目結(jié)構(gòu)。讓我們看看通過(guò)運(yùn)行上述命令生成的文件夾結(jié)構(gòu)。

圖片

在本教程中,我們將看到以下內(nèi)容:

  • config:包含應(yīng)用程序的配置文件
  • node_modules:用于存儲(chǔ)運(yùn)行應(yīng)用程序所需的已安裝軟件包列表的文件夾
  • public:包含可以提供給客戶端的靜態(tài)文件
  • src:包含F(xiàn)eathers.js應(yīng)用程序的服務(wù)代碼
  • src/hooks:包含應(yīng)用程序的自定義鉤子
  • src/middleware:包含Express.js中間件
  • src/service:包含我們的應(yīng)用程序服務(wù)
  • src/index.js:?jiǎn)?dòng)應(yīng)用的入口文件
  • src/app.js:配置Feathers.js應(yīng)用程序
  • src/app.hook.js:包含應(yīng)用到每個(gè)服務(wù)的鉤子
  • src/channels.js:設(shè)置Feathers.js事件通道
  • test:包含應(yīng)用程序的測(cè)試代碼

現(xiàn)在使用如下命令以開發(fā)模式啟動(dòng)服務(wù):

npm run dev

以開發(fā)模式運(yùn)行服務(wù)會(huì)激活熱加載和控制臺(tái)錯(cuò)誤日志。此時(shí),服務(wù)運(yùn)行在3030端口,同時(shí)一個(gè)moviedb.sqlite文件會(huì)創(chuàng)建在項(xiàng)目的根目錄中。

6.創(chuàng)建服務(wù)

服務(wù)是實(shí)現(xiàn)某些方法的對(duì)象或類的實(shí)例。服務(wù)為與任何數(shù)據(jù)交互提供一致的、獨(dú)立于協(xié)議的接口。在Feathers.js中,你只需要運(yùn)行一條命令,就能為創(chuàng)建服務(wù)做好一切準(zhǔn)備。使用如下命令來(lái)創(chuàng)建一個(gè)movie應(yīng)用:

feathers generate service

上面的命令將提示你為你的服務(wù)選擇配置。你的選擇應(yīng)該如下面的截圖所示:

圖片

這里,你為你的movie項(xiàng)目表選擇了ORM、服務(wù)名、路由URL,并在movie項(xiàng)目路由上啟用了身份驗(yàn)證。一旦這些選擇完成,該命令將在src/service文件夾中生成下面的文件夾結(jié)構(gòu)。

圖片

在你的movie.hook文件中,F(xiàn)eathers添加了下面的代碼片段,確保在請(qǐng)求通過(guò)這個(gè)路由傳遞到movie service之前,必須確認(rèn)用戶登錄時(shí)發(fā)送的用戶訪問令牌。

before: {  
all: []
find: [ authenticate('jwt') ]
get: [ authenticate('jwt') ],
create: [ hashPassword('password') ],
update: [ hashPassword('password'), authenticate('jwt') ],
patch: [ hashPassword('password'), authenticate('jwt') ],
remove: [ authenticate('jwt') ]
},

接著,使用如下命令創(chuàng)建一個(gè)租賃服務(wù)

feathers generate service

上面對(duì)movie service執(zhí)行了相同的操作,但是這次生成了不同的文件夾名和文件,如下所示:

圖片

它也會(huì)在所有的路由中調(diào)用JWT authenticate('jwt')方法。此外,該命令將為你剛剛創(chuàng)建的服務(wù)生成相應(yīng)的模型,并使用一些樣板文件,如下所示:

圖片

7.創(chuàng)建數(shù)據(jù)庫(kù)表

創(chuàng)建了服務(wù)和模型后,修改模型的屬性以獲得電影和租賃表所需的屬性。對(duì)于電影模型,將以下屬性添加到屬性中。

title: {  
type: DataTypes.STRING,
allowNull: false,
},
producer: {
type: DataTypes.STRING,
allowNull: false,
},
imageURL: {
type: DataTypes.STRING,
allowNull: false,
},
createdAt: { type: DataTypes.DATE, defaultValue: Date.now },
updatedAt: { type: DataTypes.DATE, defaultValue: Date.now },

然后,在租賃模型中,添加如下屬性:

quantity: {  
type: DataTypes.INTEGER,
allowNull: false,
},
createdAt: { type: DataTypes.DATE, defaultValue: Date.now },
updatedAt: { type: DataTypes.DATE, defaultValue: Date.now },

我們需要在用戶、電影、租賃模型中創(chuàng)建關(guān)聯(lián),讓我們進(jìn)入下一節(jié)。

8.數(shù)據(jù)關(guān)系

數(shù)據(jù)庫(kù)關(guān)系是使用連接語(yǔ)句檢索數(shù)據(jù)時(shí)在表之間形成的關(guān)聯(lián)。關(guān)系通常使用ER圖來(lái)規(guī)劃。我們的應(yīng)用有一張用戶(user)表、電影(movie)表、租賃(rental)表。電影歸租賃公司所有,用戶擁有租賃公司。在每個(gè)數(shù)據(jù)庫(kù)中,維護(hù)此數(shù)據(jù)的最直接的方法是在它們之間建立關(guān)系,將表id保存為與它們相關(guān)的表中的外鍵。讓我們繼續(xù)創(chuàng)建三個(gè)表之間的關(guān)系。在models/user.models.js中,找到如下注釋的位置:

// Define associations here  
// See https://sequelize.org/master/manual/assocs.html

并添加下面的代碼片段

const { rentals } = models;  
users.hasMany(rentals);

在代碼片段中,你創(chuàng)建了一個(gè)用戶表與租賃表的一對(duì)多關(guān)系。這意味著一個(gè)用戶可以有多個(gè)租賃。

之后,我們可以添加如下代碼到models/movie.model.js文件中:

const { rentals, movie } = models;  
movie.belongsToMany(rentals, { through: 'MovieRendtals' });

在上面的代碼片段中,我們?cè)陔娪氨砼c租賃表之間創(chuàng)建了一個(gè)多對(duì)多關(guān)系,這意味著一個(gè)電影可以有多個(gè)租賃。在多對(duì)多關(guān)系中,創(chuàng)建一個(gè)連接表來(lái)跟蹤兩個(gè)表的id,在本例中為MovieRentals。最后,添加如下代碼片段到models/rentals.model.js文件中:

const { users, movie } = models;  
rentals.belongsTo(users);
rentals.belongsToMany(movie, { through: 'MovieRentals' });

現(xiàn)在,表之間互相有了關(guān)系。你可以在創(chuàng)建數(shù)據(jù)或從任何服務(wù)獲取數(shù)據(jù)時(shí)將數(shù)據(jù)加載到表中。這讓我們進(jìn)入到了Feathers.js中的鉤子函數(shù)環(huán)節(jié)。

9.添加自定義鉤子

鉤子是插件化的中間件函數(shù),可以注冊(cè)在服務(wù)方法前,服務(wù)方法后,或者方法報(bào)錯(cuò)時(shí)。你可以注冊(cè)一個(gè)鉤子函數(shù)或者創(chuàng)建一個(gè)鉤子函數(shù)鏈來(lái)創(chuàng)建復(fù)雜的工作流。你可以創(chuàng)建一個(gè)鉤子來(lái)加載與每個(gè)表相關(guān)的數(shù)據(jù)。在你的service/rentals文件夾中,創(chuàng)建get-related.js文件并把如下代碼片段寫進(jìn)文件中:

module.exports = function (options = {}) {  
return async (context) => {
const sequelize = context.app.get('sequelizeClient');
const { users, movie } = sequelize.models;
context.params.sequelize = {
include: [{ model: users }, { model: movie }],
raw: false,
};
return context;
};
};

在上述代碼片段中,是告訴Feathers.js當(dāng)一部電影被租賃時(shí)記載用戶和電影模型的數(shù)據(jù)。現(xiàn)在使用如下的代碼片段更新你的service/rentals/rental.hooks.js文件。修改before對(duì)象內(nèi)部的代碼。

all: [authenticate('jwt')],  
find: [getRelated()],
get: [getRelated()],
create: [getRelated()],
update: [],
patch: [],
remove: []

10.應(yīng)用測(cè)試

現(xiàn)在讓我們用Insomnia測(cè)試應(yīng)用程序。我們從用戶路由開始。

(1)創(chuàng)建用戶

在/user路由下創(chuàng)建用戶

圖片

(2)驗(yàn)證用戶

在/authentication路由驗(yàn)證用戶

圖片

(3)創(chuàng)建一部電影

在/movie路由創(chuàng)建電影

圖片

(4)租賃一部電影

在/rentals路由中租賃一部電影。你將會(huì)在此路由中指定userId,movieId和quantity字段。

圖片

現(xiàn)在繼續(xù)測(cè)試每個(gè)路由上的其他請(qǐng)求方法,如GET、UPDATE和DELETE。

11.連接Arctype

將數(shù)據(jù)庫(kù)連接到Arctype,以查看應(yīng)用程序中創(chuàng)建的表和數(shù)據(jù)。你可以通過(guò)以下步驟連接到Arctype:

(1)運(yùn)行Arctyp

(2)點(diǎn)擊SQLite選項(xiàng)卡

(3)點(diǎn)擊Choose SQLite File按鈕

(4)導(dǎo)航到項(xiàng)目文件夾并選擇moviedb.sqlite文件

(5)測(cè)試連接并保存配置

一旦數(shù)據(jù)庫(kù)成功連接Arctype,你將會(huì)看到如下截圖所示的users表,movies表,rentals表,MovieRentals表。

圖片

此時(shí),你的數(shù)據(jù)庫(kù)就已經(jīng)成功連接上了Arctype。你可以點(diǎn)擊每一張表去看存儲(chǔ)的數(shù)據(jù)。

12.結(jié)語(yǔ)

在本教程中,通過(guò)構(gòu)建一個(gè)演示應(yīng)用程序,你已經(jīng)了解了Feathers.js。你已經(jīng)學(xué)習(xí)了如何設(shè)置feather .js應(yīng)用程序、創(chuàng)建服務(wù)、實(shí)現(xiàn)身份驗(yàn)證/授權(quán)、創(chuàng)建自定義鉤子以及連接到Arctype。既然你已經(jīng)掌握了這些知識(shí),那么你打算如何在下一個(gè)項(xiàng)目中使用Feathers.js ?你甚至可以通過(guò)fork或克隆GitHub庫(kù)來(lái)為這個(gè)項(xiàng)目添加一些額外的特性。

原文鏈接:https://dzone.com/articles/building-a-rest-api-with-feathersjs-and-sqlite

譯者介紹

盧鑫旺,51CTO社區(qū)編輯,半路出家的九零后程序員。做過(guò)前端頁(yè)面,寫過(guò)業(yè)務(wù)接口,搞過(guò)爬蟲,研究過(guò)JS,有幸接觸Golang,參與微服務(wù)架構(gòu)轉(zhuǎn)型。目前主寫Java,負(fù)責(zé)公司可定制化低代碼平臺(tái)的數(shù)據(jù)引擎層設(shè)計(jì)開發(fā)工作。

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2023-04-18 15:18:10

2022-01-07 15:11:27

項(xiàng)目Go 框架

2020-07-07 07:00:00

Spring WebFREST APIReactive AP

2023-01-10 14:11:26

2012-08-28 11:12:37

IBMdW

2022-05-09 17:33:23

PWA漸進(jìn)式Web應(yīng)用程序離線優(yōu)先

2022-02-09 14:36:25

GoMongoDBFiber

2023-09-21 11:20:46

2021-11-22 09:00:00

后端開發(fā)CMS

2023-05-11 12:40:00

Spring控制器HTTP

2022-02-10 23:38:23

API架構(gòu)設(shè)計(jì)

2021-12-02 16:20:18

RabbitMQAPIRest

2023-12-06 07:13:16

RESTAPI客戶端

2023-10-30 18:59:38

REST API開發(fā)

2022-08-22 07:26:32

Node.js微服務(wù)架構(gòu)

2013-03-28 14:54:36

2022-09-12 15:58:50

node.js微服務(wù)Web

2022-03-29 09:00:00

Angular框架REST API

2021-08-20 09:00:00

Node.js開發(fā)API

2024-01-09 09:09:45

RESTGraphQL
點(diǎn)贊
收藏

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

久久亚洲二区三区| 久久精品一本| 精品国产自在久精品国产| 日韩精品在线观看av| 日韩av资源| 精品一区二区三区影院在线午夜 | 国产精品视频大全| 极品久久久久久| 美日韩黄色大片| 欧美日韩亚洲高清一区二区| 青草青青在线视频 | 欧美超级免费视 在线| 国产ts丝袜人妖系列视频| 久久婷婷五月综合色丁香| 亚洲福利电影网| 一区二区成人国产精品| 欧美亚洲精品在线观看| 秋霞成人午夜伦在线观看| 久久久久久国产精品| jizz18女人高潮| 欧美三级电影在线| 日韩欧美国产一区二区在线播放| 超碰网在线观看| 欧美亚洲天堂| 中文字幕一区二区视频| 久久久久久欧美精品色一二三四| av网站在线观看免费| 美女国产一区二区三区| 2024亚洲男人天堂| 九九精品视频免费| 日韩电影免费网址| 亚洲欧美日韩区| 欧美xxxxx精品| 日韩欧洲国产| 欧美一级xxx| 91精产国品一二三产区别沈先生| 影视一区二区三区| 色婷婷综合在线| www.中文字幕在线| 欧美aa在线观看| 亚洲国产精品久久人人爱| 路边理发店露脸熟妇泻火| 又爽又大又黄a级毛片在线视频| 91亚洲大成网污www| 高清国产一区| 性中国古装videossex| 国产在线精品一区二区不卡了| 国产精品va在线| 91丝袜一区二区三区| 国产一区二区三区久久| 97精品欧美一区二区三区| 中国毛片直接看| 一本到12不卡视频在线dvd| 精品国偷自产在线视频| 91香蕉视频污在线观看| 婷婷成人基地| 乱亲女秽乱长久久久| 强行糟蹋人妻hd中文| 中文精品久久| 欧美精品激情在线| 国产无遮挡裸体免费视频| 在线播放亚洲| 欧美有码在线观看| 亚洲无码精品一区二区三区| 日韩黄色在线观看| 国产欧美一区二区三区久久| 国产又大又粗又长| 国产伦精品一区二区三区在线观看| 成人国产精品久久久久久亚洲| 国产精品美女一区| 国产jizzjizz一区二区| 狠狠综合久久av| 免费理论片在线观看播放老| 欧美激情一区在线观看| 中文字幕一区二区三区最新| 18加网站在线| 天天av天天翘天天综合网色鬼国产| a√天堂在线观看| a成人v在线| 精品久久一区二区| 国产精品无码一区二区三区| 久久视频在线| 国模吧一区二区三区| 国产精品久久久久久久久久久久久久久久久 | 热这里只有精品| 毛片网站在线看| 色诱视频网站一区| 成年网站免费在线观看| 超碰97久久| 国产亚洲综合久久| 久久机热这里只有精品| 久久综合亚州| 99re国产在线播放| 秋霞av在线| 亚洲同性同志一二三专区| 日韩欧美国产综合在线| 粉嫩91精品久久久久久久99蜜桃| 日韩欧美一二三区| 国产精品成人一区二区三区电影毛片 | 日本在线影院| 欧美一区二区私人影院日本| 又黄又爽的网站| 久久一级电影| 欧美性受xxxx白人性爽| 国产免费一区二区三区最新不卡| 2023国产精品视频| 日本黄网站色大片免费观看| 成人国产激情| 亚洲精品自在久久| 妺妺窝人体色www婷婷| 免费在线观看一区二区三区| 国产中文一区二区| 超碰个人在线| 欧美日韩和欧美的一区二区| 一区二区不卡免费视频| 在线成人激情| 成人国产精品日本在线| 精品推荐蜜桃传媒| 性久久久久久久久久久久| 亚洲精品第三页| 欧美最新另类人妖| 热久久免费国产视频| 好吊色视频一区二区| 亚洲四区在线观看| 天天视频天天爽| 自拍亚洲一区| 午夜精品久久久久久99热| 99久久一区二区| 综合久久给合久久狠狠狠97色| 一区二区成人网| 欧美男男gaytwinkfreevideos| 午夜精品久久久久久久99热浪潮 | 国产精品亚洲d| 亚洲另类xxxx| 久久国产视频一区| 91蝌蚪porny| 霍思燕三级露全乳照| 亚洲午夜免费| 色综合色综合网色综合| a网站在线观看| 中文字幕制服丝袜一区二区三区| av网站在线不卡| 日韩av有码| 国产精品丝袜视频| 在线免费看a| 欧美久久久一区| 国产日产精品一区二区三区的介绍| 久久精品国产亚洲一区二区三区 | 欧美日韩一视频区二区| av一本久道久久波多野结衣| 1024在线播放| 精品国产免费久久| 日韩精品在线免费看| 成人av网站大全| 国产91在线免费| 亚洲精品aaaaa| 国产精彩精品视频| 波多野结衣在线网站| 欧美美女一区二区在线观看| 视频国产一区二区| 韩国精品久久久| 妞干网视频在线观看| 国产乱论精品| 日韩免费av片在线观看| av在线三区| 欧美一区二区三区影视| 久一视频在线观看| 91美女蜜桃在线| 黄色三级视频片| 亚洲女同一区| 国产高清在线一区二区| 九色porny丨入口在线| 亚洲视频在线观看网站| 亚洲中文字幕在线观看| 亚洲综合免费观看高清在线观看| 国产一级黄色录像| 琪琪一区二区三区| 国风产精品一区二区| 少妇一区二区三区| 国产一区玩具在线观看| 丁香高清在线观看完整电影视频| 精品亚洲男同gayvideo网站| 亚洲一区 中文字幕| 亚洲一区中文日韩| 男人天堂av电影| 国产一区二区三区av电影| 给我免费播放片在线观看| 国产精品美女久久久久久不卡| 成人美女免费网站视频| 成人福利影视| 在线播放日韩av| 亚洲女人18毛片水真多| 在线免费观看日本欧美| 九九视频在线观看| 国产精品亲子伦对白| 成人做爰www看视频软件| 麻豆成人久久精品二区三区红 | 自拍亚洲欧美老师丝袜| 久久aimee| 成人激情黄色网| 美女100%一区| 欧美精品久久久久久久久| 国产成人天天5g影院在线观看| 欧美成人a在线| 91极品身材尤物theporn| 香蕉成人啪国产精品视频综合网| 国产黄色片在线| 91麻豆精品在线观看| 善良的小姨在线| 麻豆一区二区99久久久久| av动漫在线看| 欧美日韩一区自拍| 最新视频 - x88av| 成人午夜国产| 欧美激情www| 精品一区二区男人吃奶| 成人性生交大片免费看视频直播| 二吊插入一穴一区二区| 午夜精品久久久久久99热软件 | 日韩激情一区| 久久人人爽爽人人爽人人片av| 亚洲成av人片在线观看www| 国产日产久久高清欧美一区| 日韩在线伦理| 97香蕉超级碰碰久久免费软件| 欧美xxxx黑人又粗又长| 欧美成人剧情片在线观看| 婷婷视频在线| 中文字幕日韩精品在线观看| 日本高清中文字幕二区在线| 亚洲第一免费播放区| jlzzjlzzjlzz亚洲人| 欧美一区二区三区在线| 国产又黄又爽视频| 欧美美女一区二区三区| 一级做a爱片性色毛片| 欧美午夜电影网| 成人免费一级片| 欧洲生活片亚洲生活在线观看| 亚洲av中文无码乱人伦在线视色| 疯狂做受xxxx高潮欧美日本| 亚洲精品1区2区3区| 五月综合激情网| 日韩三级免费看| 五月综合激情婷婷六月色窝| 国产 日韩 欧美 在线| 婷婷久久综合九色综合伊人色| 日本特黄特色aaa大片免费| 五月婷婷综合网| 毛片在线免费视频| 日韩欧美成人网| www.av88| 欧美美女一区二区| www.日本在线观看| 亚洲成人精品视频在线观看| 五月天丁香视频| 亚洲人成免费电影| 日本中文字幕视频在线| 精品国产一区二区三区久久| av免费在线观看网址| 欧美激情一区二区三级高清视频| hd国产人妖ts另类视频| 91精品国产91久久久久福利| 欧美成人ⅴideosxxxxx| 国产精品香蕉av| 玖玖玖电影综合影院| 国产精品一区二区三区精品| 啪啪激情综合网| 日日骚一区二区网站| 久久久久国产精品| 91午夜在线观看| 久久综合中文| 欧洲美女亚洲激情| 成人永久看片免费视频天堂| 国产精品毛片一区二区| 国产精品国产精品国产专区不片| 亚洲国产成人精品综合99| 偷拍与自拍一区| 成人黄色片在线观看| 日韩亚洲电影在线| 四虎精品在永久在线观看| 色小说视频一区| 欧美日韩在线视频免费观看| 庆余年2免费日韩剧观看大牛| 国产福利91精品一区二区| 操一操视频一区| 国产欧美日韩在线观看视频| 糖心vlog在线免费观看| 亚洲综合丁香| 99999精品| 久久人人爽爽爽人久久久| 丝袜美腿小色网| 日本乱人伦aⅴ精品| 国产黄色大片网站| 国产亚洲精品91在线| av在线理伦电影| 成人久久久久爱| 激情婷婷综合| 国产中文字幕乱人伦在线观看| 免费视频一区二区| 亚洲第一黄色网址| 亚洲色图都市小说| 无码一区二区三区| 亚洲第一免费网站| 超鹏97在线| 国产在线999| 欧美老女人另类| 自慰无码一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 国产午夜精品福利| 日产欧产va高清| 日韩视频永久免费| 亚洲精品传媒| 国产成人亚洲综合91精品| 99国产精品免费网站| 一本久久a久久精品vr综合| 亚洲综合精品四区| 亚洲色图欧美另类| 一区二区三区日本| 91精品国产色综合久久不8| 亚洲精品中文字幕av| 69av成人| 97av自拍| 91精品秘密在线观看| 日本一二区免费| 中文字幕av一区二区三区免费看| 九一国产在线观看| 亚洲国产一区自拍| 超碰在线中文字幕| 成人xxxxx色| 欧美三级特黄| 岛国大片在线免费观看| 亚洲女女做受ⅹxx高潮| 一区二区三区免费在线| 这里只有精品在线播放| **在线精品| 欧美不卡三区| 视频一区二区三区在线| 性久久久久久久久久| 欧美日韩国产页| 天堂成人在线| 欧美在线影院在线视频| 自拍偷拍欧美一区| 国产天堂在线播放| 中文字幕成人av| 91丨porny丨在线中文| 久久精品视频在线观看| 在线免费观看亚洲| 欧洲精品视频在线| 粉嫩av亚洲一区二区图片| 久久精品人妻一区二区三区| 精品福利一二区| 伊人久久综合一区二区| 日韩精品极品视频在线观看免费| 日韩电影在线观看电影| 五月天免费网站| 日韩视频免费直播| 24小时免费看片在线观看| 久久久久久久免费| 免费在线成人网| 九九九在线视频| 亚洲精选在线观看| 福利一区视频| 免费观看亚洲视频| 91麻豆精品视频| 亚洲性在线观看| 九九热这里只有在线精品视| 国产精品视频3p| 啊啊啊国产视频| 亚洲人成在线观看一区二区| 蜜桃视频污在线观看| 青青久久aⅴ北条麻妃| 91亚洲国产成人久久精品| 日本中文字幕精品| 色综合久久综合网97色综合| av色图一区| 懂色中文一区二区三区在线视频| 亚洲神马久久| 国产一区第一页| 亚洲福利视频免费观看| 欧美色片在线观看| 免费看日本黄色| 国产农村妇女精品| wwwav在线播放| 情事1991在线| 亚洲欧美综合| 天天躁日日躁aaaxxⅹ| 91精品国产综合久久久久久| 色综合桃花网| 中文字幕人成一区| 99精品在线观看视频| 91福利免费视频| 69精品小视频| 在线一区免费| 久久精品国产亚洲AV熟女| 欧美一区二区三区在线电影| 欧美黑人疯狂性受xxxxx野外| 亚洲五码在线观看视频| 久久久国产午夜精品| 亚洲成人中文字幕在线|