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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【Flask-RESTPlus系列】Part1:快速入门

發布時間:2024/1/3 综合教程 23 生活家
生活随笔 收集整理的這篇文章主要介紹了 【Flask-RESTPlus系列】Part1:快速入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0x00 內容概覽

Flask-RESTPlus安裝
快速入門
初始化
一個最簡單的API示例
資源路由
端點
參數解析
數據格式化
順序保留
完整例子 

0x01 Flask-RESTPlus安裝

1、Python版本兼容性

當前Flask-RESTPlus的最新版本為v0.11.0,支持2.7或3.4+版本的Python。

2、安裝方式

可以通過以下幾種方式來安裝:

pip安裝:$pip install flask-restplus

easy_install安裝:$ easy_install flask-restplus

離線安裝:首先下載flask-restplus包,然后本地解壓切換到包目錄,使用python setup.py install安裝

安裝開發版:

git clone https://github.com/noirbizarre/flask-restplus.git
cd flask-restplus
pip install -e .[dev,test]

0x02 快速入門

本教程假設你已經熟悉了Flask,并已經正常安裝了Flask和Flask-RESTPlus。如果還未安裝Flask-RESTPlus,那么請參考0x01部分進行安裝。

1、初始化

在使用Flask-RESTPlus之前,需要進行初始化,這一點與Flask的其他擴展是一樣的,通過傳入Flask實例進行初始化:

from flask import Flask
from flask_restplus import Api

app = Flask(__name__)
api = Api(app)

或者使用工廠模式進行初始化:

from flask import Flask
from flask_restplus import Api

api = Api()

app = Flask(__name__)
api.init_app(app)

2、一個最簡單的API示例

一個最簡單的API示例程序如下:

 1 # file:1-Quick-Start.py
 2 
 3 from flask import Flask
 4 from flask_restplus import Resource, Api
 5 
 6 app = Flask(__name__)
 7 api = Api(app)
 8 
 9 @api.route('/hello')
10 class HelloWorld(Resource):
11     def get(self):
12         return {'hello': 'world'}
13 
14 if __name__ == '__main__':
15     app.run(debug=True)

需要注意的是,此時在程序中我們開啟了Flask的調試模式,即設置了debug=True,這是為了更詳細地打印錯誤信息,以及確保我們每次修改代碼時,都會自動發現變更并重新啟動運行最新的代碼。不過,生產環境絕對不要開啟調試模式,因為它會使你的后臺服務處于被攻擊的風險之中!

此時在PyCharm中運行該程序,正常情況下會打印出以下信息:

C:SelfFilesInstallPython36python.exe C:/SelfFiles/Codes/Python/codes/Flask-RESTPlus-Tutorial/1_Quick_Start/1-Quick-Start.py
* Restarting with stat
* Debugger is active!
* Debugger PIN: 156-529-095
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

此時在瀏覽器中訪問http://127.0.0.1:5000/hello會返回以下結果:

或者使用curl工具進行訪問:

另外,我們也可以在瀏覽器中直接訪問我們API的根路徑,即http://127.0.0.1:5000,此時會顯示Swagger的界面,里面包含了我們的Restful API的相應信息,這就是Flask-RESTPlus的強大之處(當然,其實是Swagger的強大之處):

3、資源路由

Flask-RESTPlus提供的主要創建對象就是資源。資源創建于Flask可插入視圖(pluggable view)之上,使得我們可以通過在資源上定義方法來很容易地訪問多個HTTP方法。下面是一個對todo應用的基本CRUD資源操作的示例:

 1 from flask import Flask, request
 2 from flask_restplus import Resource, Api
 3 
 4 app = Flask(__name__)
 5 api = Api(app)
 6 
 7 todos = {}
 8 
 9 @api.route('/<string:todo_id>')
10 class TodoSimple(Resource):
11     def get(self, todo_id):
12         return {todo_id: todos[todo_id]}
13 
14     def put(self, todo_id):
15         todos[todo_id] = request.form['data']
16         return {todo_id: todos[todo_id]}
17 
18 if __name__ == '__main__':
19     app.run(debug=True)

可以通過curl對其進行訪問操作:

或者,如果你的Python中安裝了Requests包,那也也可以使用它來進行訪問:

Flask-RESTPlus理解視圖方法中的多種類型的返回值。類似于Flask,你可以返回任何可迭代的類型,它會將該返回值轉換成響應對象(response),包括原始的Flask響應對象。Flask-RESTPlus還提供了設置響應碼和響應頭的功能,這一點可以通過使用多個返回值來實現,如下所示:

class Todo1(Resource):
    def get(self):
        # 默認為200 OK
        return {'task': 'Hello world'}

class Todo2(Resource):
    def get(self):
        # 設置響應碼為201
        return {'task': 'Hello world'}, 201

class Todo3(Resource):
    def get(self):
        # 設置響應碼為201,并返回自定義的響應頭
        return {'task': 'Hello world'}, 201, {'Etag': 'some-opaque-string'}

4、端點(Endpoints)

大多數情況下,某個資源都會有多個URL。所以,我們可以向Api對象的add_resource()方法或route()裝飾器中傳入多個URL,這樣每個URL都將會路由到該資源上:

api.add_resource(HelloWorld, '/hello', '/world')

# 或者下面裝飾器方式,二者等價

@api.route('/hello', '/world')
class HelloWorld(Resource):
    pass

另外,也可以將URL中的部分內容設置成變量,以此來匹配資源方法,如下所示:

api.add_resource(Todo, '/todo/<int:todo_id>', endpoint='todo_ep')

# 或者下面裝飾器方式,二者等價

@api.route('/todo/<int:todo_id>', endpoint='todo_ep')
class HelloWorld(Resource):
    pass

# 這樣,URL為/todo/1、/todo/2等以/todo/加一個int型整數的URL都可以路由到該資源

注意:如果一個請求(request)與應用的任何端點都不匹配,那么Flask-RESTPlus將會返回一個404錯誤信息,并給出其他與所請求端點最匹配的建議信息。不過,我們可以通過在程序配置中設置ERROR_404_HELP為False來關閉該功能。

未關閉時程序如下:

 1 from flask import Flask, request
 2 from flask_restplus import Resource, Api
 3 
 4 app = Flask(__name__)
 5 api = Api(app)
 6 
 7 
 8 todos = {}
 9 
10 @api.route('/<string:todo_id>')
11 class TodoSimple(Resource):
12     def get(self, todo_id):
13         return {todo_id: todos[todo_id]}
14 
15     def put(self, todo_id):
16         todos[todo_id] = request.form['data']
17         return {todo_id: todos[todo_id]}
18 
19 if __name__ == '__main__':
20     app.run(debug=True)

運行改程序并在瀏覽器中訪問http://localhost:5000/hello/hello,結果如下:

設置ERROR_404_HELP為False后的程序為:

 1 from flask import Flask, request
 2 from flask_restplus import Resource, Api
 3 
 4 app = Flask(__name__)
 5 api = Api(app)
 6 app.config['ERROR_404_HELP'] = False
 7 
 8 todos = {}
 9 
10 @api.route('/<string:todo_id>')
11 class TodoSimple(Resource):
12     def get(self, todo_id):
13         return {todo_id: todos[todo_id]}
14 
15     def put(self, todo_id):
16         todos[todo_id] = request.form['data']
17         return {todo_id: todos[todo_id]}
18 
19 if __name__ == '__main__':
20     app.run(debug=True)

再次運行并訪問http://localhost:5000/hello/hello,結果如下:

此處兩種情況返回結果一致,尚未嘗試出給出相近端點的建議信息,也許是我沒用使用對,后續再補充。

5、參數解析(Argument Parsing)

盡管Flask提供了容易的方式來訪問請求數據(例如,查詢字符串querystring或者POST表單編碼數據),但驗證表單數據仍舊是一件令人頭疼的事。Flask-RESTPlus內置支持對請求數據的驗證,這一功能是通過使用一個類似于argparse的庫來實現的,如下:

from flask_restplus import reqparse

parser = reqparse.RequestParser()
parser.add_argument('rate', type=int, help='Rate to charge for this resource')
args = parser.parse_args()

注意:與argparse模塊不同的是,parse_args()返回的是一個Python字典,而不是自定義數據結構。

使用RequestParser類還能獲取完整的錯誤信息。如果一個參數未驗證通過,Flask-RESTPlus將響應一個400壞請求,以及一個高亮錯誤信息的響應。示例程序如下:

 1 from flask import Flask, request
 2 from flask_restplus import Resource, Api,reqparse
 3 
 4 app = Flask(__name__)
 5 
 6 api = Api(app)
 7 
 8 from flask_restplus import reqparse
 9 
10 parser = reqparse.RequestParser()
11 parser.add_argument('rate', type=int,required=True,help='Rate to charge for this resource')
12 
13 
14 todos = {
15     '1':'eat',
16     '2':'sleep'
17 }
18 
19 @api.route('/<string:todo_id>')
20 class TodoSimple(Resource):
21     def get(self, todo_id):
22         return {todo_id: todos[todo_id]}
23 
24     def put(self, todo_id):
25         args = parser.parse_args()
26         todos[todo_id] = request.form['data']
27         return {todo_id: todos[todo_id]}
28 
29 if __name__ == '__main__':
30     app.run(debug=True)

其中,parser.add_argument('rate', type=int,required=True,help='Rate to charge for this resource')表示,參數名為rate,數據類型為int,請求時必須發送此參數,如果驗證不通過時將會返回help指定的信息。

運行程序并使用curl進行訪問,分別驗證以下幾種情況:

提供rate值,但不是int型(驗證不通過)
提供rate值,且是int型(驗證通過)
不提供rate值(驗證不通過)

結果分別如下:

另外,以參數strict=True調用parse_args()能夠保證如果請求中包含了解析器中未定義的參數時,將會拋出一個錯誤。示例程序如下:

 1 from flask import Flask, request
 2 from flask_restplus import Resource, Api,reqparse
 3 
 4 app = Flask(__name__)
 5 
 6 api = Api(app)
 7 
 8 from flask_restplus import reqparse
 9 
10 parser = reqparse.RequestParser()
11 parser.add_argument('rate', type=int,required=True,help='Rate to charge for this resource')
12 
13 
14 todos = {
15     '1':'eat',
16     '2':'sleep'
17 }
18 
19 @api.route('/<string:todo_id>')
20 class TodoSimple(Resource):
21     def get(self, todo_id):
22         return {todo_id: todos[todo_id]}
23 
24     def put(self, todo_id):
25         args = parser.parse_args(strict=True)
26         todos[todo_id] = todo_id
27         return {todo_id: todos[todo_id]}
28 
29 if __name__ == '__main__':
30     app.run(debug=True)

此時,運行該程序并使用curl訪問,結果如下:

6、數據格式化(Data Formatting)

默認情況下,在返回的可迭代對象中的所有字段都會原樣返回。雖然在處理Python基本數據結構時這種方式很不錯,但是當涉及到對象時將會變得非常棘手。為了解決這個問題,Flask-RESTPlus提供了fields模塊和marshal_with()裝飾器。類似于Django ORM和WTForm,你可以使用fields模塊來描述響應的數據結構。示例程序如下:

 1 from flask import Flask
 2 from flask_restplus import fields, Api, Resource
 3 
 4 app = Flask(__name__)
 5 api = Api(app)
 6 
 7 model = api.model('Model', {
 8     'task': fields.String,
 9     'uri': fields.Url('todo_ep',absolute=True) # absolute參數表示生成的url是否是絕對路徑
10 })
11 
12 class TodoDao(object):
13     def __init__(self, todo_id, task):
14         self.todo_id = todo_id
15         self.task = task
16 
17         # 該字段不會發送到響應結果中
18         self.status = 'active'
19 
20 @api.route('/todo',endpoint='todo_ep')
21 class Todo(Resource):
22     @api.marshal_with(model)
23     def get(self, **kwargs):
24         return TodoDao(todo_id='my_todo', task='Remember the milk')
25 
26 if __name__ == '__main__':
27     app.run(debug=True)

運行上述程序并使用curl訪問結果如下:

上述示例接受了一個Python對象,并將其進行結構轉換。而marshal_with()裝飾器就是用來對結果按照model的結構進行轉換的,從上面的結果和代碼中可以知道,我們僅僅從TodoDao對象中提取了task字段的值,而model中的fields.Url字段是一個特殊字段,它接受一個端點名,并在響應中生成該端點名對應的URL。此外,使用marshal_with()裝飾器還可以以swagger規范對輸出進行歸檔。fields模塊中包含了你所需要的大多數類型,詳細信息可以查看fields模塊的說明文檔。

7、順序保留

默認情況下,字段順序并未得到保留,因為它會損耗性能。不過,如果你確實需要保留字段順序,那么可以向類或函數傳入一個ordered=True的參數項,以此強制進行順序保留:

Api全局保留:api = Api(ordered = True)
Namespace全局保留:ns = Namespace(ordered=True)
marshal()局部保留:return marshal(data, fields, ordered=True)

本例中只舉例局部保留方式的使用方法,程序如下:

 1 from flask import Flask
 2 from flask_restplus import fields, Api, Resource
 3 
 4 app = Flask(__name__)
 5 api = Api(app)
 6 
 7 model = api.model('Model', {
 8     'task': fields.String,
 9     'uri': fields.Url('todo_ep',absolute=True), # absolute參數表示生成的url是否是絕對路徑
10     'developer':fields.String(default='jack')
11 })
12 
13 class TodoDao(object):
14     def __init__(self, todo_id, task, developer):
15         self.todo_id = todo_id
16         self.task = task
17         self.developer = developer
18 
19         # 該字段不會發送到響應結果中
20         self.status = 'active'
21 
22 @api.route('/todo',endpoint='todo_ep')
23 class Todo(Resource):
24     # @api.marshal_with(model)
25     def get(self, **kwargs):
26         return api.marshal(TodoDao(todo_id='my_todo', task='Remember the milk', developer='Tom'),model,ordered=False)
27 
28 if __name__ == '__main__':
29     app.run(debug=True)

運行并使用curl進行訪問,結果如下:

8、完整例子

 1 from flask import Flask
 2 from flask_restplus import Api, Resource, fields
 3 from werkzeug.contrib.fixers import ProxyFix
 4 
 5 app = Flask(__name__)
 6 app.wsgi_app = ProxyFix(app.wsgi_app)
 7 
 8 api = Api(app, version='1.0', title='TodoMVC API',
 9     description='A simple TodoMVC API',
10 )
11 
12 # 定義命名空間
13 ns = api.namespace('todos', description='TODO operations')
14 
15 todo = api.model('Todo', {
16     'id': fields.Integer(readOnly=True, description='The task unique identifier'),
17     'task': fields.String(required=True, description='The task details')
18 })
19 
20 
21 class TodoDAO(object):
22     def __init__(self):
23         self.counter = 0
24         self.todos = []
25 
26     def get(self, id):
27         for todo in self.todos:
28             if todo['id'] == id:
29                 return todo
30         api.abort(404, "Todo {} doesn't exist".format(id))
31 
32     def create(self, data):
33         todo = data
34         todo['id'] = self.counter = self.counter + 1
35         self.todos.append(todo)
36         return todo
37 
38     def update(self, id, data):
39         todo = self.get(id)
40         todo.update(data)
41         return todo
42 
43     def delete(self, id):
44         todo = self.get(id)
45         self.todos.remove(todo)
46 
47 
48 DAO = TodoDAO()
49 DAO.create({'task': 'Build an API'})
50 DAO.create({'task': '?????'})
51 DAO.create({'task': 'profit!'})
52 
53 
54 @ns.route('/')
55 class TodoList(Resource):
56     '''獲取所有todos元素,并允許通過POST來添加新的task'''
57     @ns.doc('list_todos')
58     @ns.marshal_list_with(todo)
59     def get(self):
60         '''返回所有task'''
61         return DAO.todos
62 
63     @ns.doc('create_todo')
64     @ns.expect(todo)
65     @ns.marshal_with(todo, code=201)
66     def post(self):
67         '''創建一個新的task'''
68         return DAO.create(api.payload), 201
69 
70 
71 @ns.route('/<int:id>')
72 @ns.response(404, 'Todo not found')
73 @ns.param('id', 'The task identifier')
74 class Todo(Resource):
75     '''獲取單個todo項,并允許刪除操作'''
76     @ns.doc('get_todo')
77     @ns.marshal_with(todo)
78     def get(self, id):
79         '''獲取id指定的todo項'''
80         return DAO.get(id)
81 
82     @ns.doc('delete_todo')
83     @ns.response(204, 'Todo deleted')
84     def delete(self, id):
85         '''根據id刪除對應的task'''
86         DAO.delete(id)
87         return '', 204
88 
89     @ns.expect(todo)
90     @ns.marshal_with(todo)
91     def put(self, id):
92         '''更新id指定的task'''
93         return DAO.update(id, api.payload)
94 
95 
96 if __name__ == '__main__':
97     app.run(debug=True)

更多其他示例參考GitHub。

0x03 參考鏈接

http://flask-restplus.readthedocs.io/en/stable/quickstart.html
http://flask-restplus.readthedocs.io/en/stable/example.html

總結

以上是生活随笔為你收集整理的【Flask-RESTPlus系列】Part1:快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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

久久久久久国产精品亚洲78 | 在线免费观看国产视频 | 午夜成人免费影院 | 深夜国产福利 | av韩国在线 | 成人av电影免费 | 999久久久久久久久6666 | 欧美日韩视频精品 | 狠狠综合久久 | 4438全国亚洲精品观看视频 | 欧美a影视 | 亚洲影院一区 | 久爱精品在线 | 久久久久国产一区二区三区 | 国产一区二区三区网站 | 2019中文字幕第一页 | 91人人射| 欧美一二区视频 | 国产专区精品视频 | 91免费日韩| 国产粉嫩在线观看 | 亚洲成人一二三 | 香蕉视频日本 | 麻豆传媒在线视频 | 中文视频一区二区 | 草久视频在线 | 看v片| 亚洲精品网站在线 | 中文字幕视频网 | 亚洲综合在线视频 | 日b视频国产 | 精品播放 | 97色婷婷 | av在线精品| 国产成人三级一区二区在线观看一 | 亚洲va欧美 | 2022国产精品视频 | 国产精品夜夜夜一区二区三区尤 | 91精品久 | 伊人伊成久久人综合网小说 | 国产在线自 | 亚洲第一成网站 | 男女啪啪网站 | 色婷婷六月天 | 91日韩国产 | 久草网在线 | 欧美一级电影在线观看 | 91福利视频一区 | 久久精品视频网 | 天天爱天天干天天爽 | 2024国产精品视频 | 五月激情丁香婷婷 | 成人国产精品免费观看 | 日韩高清毛片 | 国产资源在线播放 | 亚洲经典中文字幕 | 欧美精品久久久久久久久免 | 国产区久久 | 手机看片99 | 精品一区二区av | 亚洲aaa毛片 | 激情综合网色播五月 | 日韩欧美在线中文字幕 | 日韩最新在线 | 国产在线精品一区二区三区 | 五月激情站 | 色婷婷免费视频 | 97视频人人免费看 | 国产伦理久久精品久久久久_ | 国产高清在线永久 | 日韩美女av在线 | 激情婷婷在线观看 | 中文字幕色婷婷在线视频 | 国产精品1区2区 | 91一区啪爱嗯打偷拍欧美 | 在线观看电影av | 成人影音av | 亚色视频在线观看 | 日韩电影一区二区三区在线观看 | 中文字幕2021 | 国产五十路毛片 | 在线成人性视频 | 国产精品福利无圣光在线一区 | www五月婷婷 | 日韩免费视频观看 | 91一区啪爱嗯打偷拍欧美 | 超碰官网 | 97视频资源| 久久精品永久免费 | 亚州av网站大全 | 久久美女精品 | 人成午夜视频 | 日本成址在线观看 | 麻豆免费视频网站 | 色吊丝av中文字幕 | a黄色一级 | 韩日在线一区 | 免费观看黄色12片一级视频 | 欧美乱淫视频 | 色综合久久五月 | 91九色最新地址 | 日韩高清在线观看 | 午夜精品久久久久久久久久久 | 美女啪啪图片 | 西西大胆免费视频 | 欧美大荫蒂xxx | 天天操天天爱天天爽 | 99 精品 在线 | 国产黄色成人av | 99久久电影| 国产免费二区 | 在线观看免费av网 | 韩国精品福利一区二区三区 | 97色婷婷 | 国产 成人 久久 | 国产黄在线 | 九九热精品在线 | 精品96久久久久久中文字幕无 | 国产精品com | 成人午夜精品 | 久久99精品久久久久久 | 青青草国产精品视频 | 看全黄大色黄大片 | 美女黄视频免费 | 免费十分钟 | 国产精品一区二区美女视频免费看 | 在线电影中文字幕 | 亚洲欧美色婷婷 | www.色国产 | 国产中文字幕国产 | 天天操夜夜看 | 日批视频在线观看免费 | 日韩欧美在线一区二区 | 国产视频在线观看一区 | 亚洲三级黄色 | 成人免费视频网站在线观看 | 五月婷社区 | 91亚洲欧美 | 在线观看岛国av | 精品国产_亚洲人成在线 | 国产精品久久久久久久久久免费 | 天天色综合1 | 欧美久久久久久久久久久久久 | 18pao国产成视频永久免费 | 日女人电影 | 丁香久久激情 | 天天干天天拍天天操 | 91视频 - v11av| 91一区二区在线 | 亚洲成人国产 | 中文字幕在线观看第一区 | 久久久黄色 | 一区二区三区四区五区在线 | avhd高清在线谜片 | 久久男女视频 | 国产91在线播放 | 久久久久久久免费看 | 亚洲专区免费观看 | 99日韩精品 | 黄色一级大片在线观看 | 99视频免费看 | 欧美激情综合网 | 探花视频在线观看免费版 | 久久一区二区三区日韩 | 国产破处在线播放 | 日韩电影在线一区 | 高清有码中文字幕 | 久久午夜免费观看 | 99操视频| 日本xxxx.com | 天天摸天天弄 | 国产理论一区二区三区 | 91网页版在线观看 | 亚洲激情综合网 | 日韩高清无线码2023 | 国产黄色一级大片 | 91黄色小网站 | 色婷婷激情电影 | av一区二区在线观看中文字幕 | 成人av资源网 | 久久尤物电影视频在线观看 | 日韩中文字幕视频在线观看 | 99精品国产在热久久 | 日本最新高清不卡中文字幕 | 中文字幕精品久久 | 中文字幕高清av | 丁香婷婷成人 | 亚州黄色一级 | 日韩av网页 | 尤物九九久久国产精品的分类 | 91av亚洲 | 国产视频中文字幕 | 999视频网站 | 久久成人麻豆午夜电影 | 国产伦精品一区二区三区四区视频 | 天天摸天天舔天天操 | 日韩av区| 日韩中文字幕a | 日韩在线观看中文字幕 | 97免费在线观看视频 | 日韩一二区在线 | 中文字幕在线一区观看 | 久草www| 国产69精品久久99不卡的观看体验 | 9999在线视频 | 韩国精品福利一区二区三区 | 亚洲九九九在线观看 | 天天射色综合 | 久久精品国产一区二区电影 | 久久免费视频观看 | 四虎在线视频免费观看 | 在线观看爱爱视频 | 99精品视频在线观看免费 | 亚洲日韩中文字幕在线播放 | 色婷婷av在线 | 久久精品导航 | 久久久91精品国产 | 亚洲91精品| 91传媒激情理伦片 | 色婷婷福利视频 | 亚洲一级影院 | 中文字幕 婷婷 | 成人黄色小说在线观看 | 亚洲一区久久久 | 一区二区三区四区免费视频 | 99精品视频在线观看 | 国产精品 亚洲精品 | 国产又黄又爽无遮挡 | 午夜国产福利在线观看 | 狠狠色丁香婷婷 | 开心婷婷色 | 九九视频精品免费 | 在线视频 一区二区 | 超碰国产97 | 96精品高清视频在线观看软件特色 | 国产精品中文字幕在线 | 国产精品久久久久一区二区 | 国内久久看 | 久久国产福利 | 久久男女视频 | 国产日韩欧美在线 | 97视频在线免费播放 | 波多野结衣精品在线 | 欧美精品乱码久久久久 | 日韩免费一区二区 | 亚洲国产字幕 | 日韩最新中文字幕 | 国产精品美女999 | 久久精品视频18 | 2018精品视频| 国产精品亚州 | 色播五月婷婷 | 国产高清视频免费在线观看 | 久久麻豆视频 | 中文字幕国产视频 | 国产黄色免费观看 | 久久一区二区三区超碰国产精品 | 精品久久网| 欧美日一级片 | 91理论电影 | 亚洲欧美视频在线播放 | 黄色小说在线观看视频 | 日韩中文字幕在线不卡 | 亚洲狠狠丁香婷婷综合久久久 | 一区二区精品在线 | 91在线免费视频观看 | 夜夜骑日日| 欧美成人基地 | 日韩羞羞| 五月天六月丁香 | 香蕉精品视频在线观看 | 国产91欧美| www久久 | 99热最新精品 | 尤物九九久久国产精品的分类 | 日夜夜精品视频 | 亚洲一区二区精品3399 | 午夜精品一区二区三区在线播放 | 黄色大片日本 | 国产精品久久久久久久久蜜臀 | 欧美激情另类 | 免费看麻豆 | 美女天天操 | 黄色特一级片 | 国产成人一区二区三区 | 99免在线观看免费视频高清 | 999久久久久久久久久久 | 精品国产欧美一区二区三区不卡 | 91av视频在线免费观看 | 综合色狠狠 | 黄色在线免费观看网站 | 一区二区久久 | 免费视频三区 | 国产男女免费完整视频 | 国产精品99久久久久久有的能看 | 午夜少妇av | 日韩黄色网络 | 国产传媒中文字幕 | 国产色婷婷精品综合在线手机播放 | 中文字幕一区二区三区精华液 | 久久99视频精品 | 97福利在线 | 中文字幕在线观看1 | 亚洲高清国产视频 | 九九九九九国产 | 国产一级黄色免费看 | www看片网站 | 成人aⅴ视频| 久久www免费人成看片高清 | 国产日产亚洲精华av | 日韩免费电影网 | 狠狠的操狠狠的干 | av中文字幕在线播放 | 精品国产乱码久久久久久1区二区 | 九九视频热 | 天堂在线视频中文网 | 国产成人一区二 | 国产在线精品国自产拍影院 | 欧美日韩一级久久久久久免费看 | 日日成人网 | 一本一本久久a久久精品牛牛影视 | 精品亚洲视频在线观看 | 91精品视频网站 | 欧美精品在线视频 | 精品国产免费看 | 麻豆国产露脸在线观看 | 911精品视频 | 精品高清美女精品国产区 | 99视频在线播放 | 国产精品色婷婷视频 | 日韩视频中文字幕在线观看 | 在线观看黄污 | 成人免费在线视频观看 | 97视频在线 | 久精品视频免费观看2 | a级片久久久 | 在线影院 国内精品 | 五月天六月婷婷 | 中文字幕日韩精品有码视频 | 91九色视频 | 天天操天天操天天干 | 国产美女网站在线观看 | 狠狠婷婷 | 在线精品视频免费播放 | 国产免费黄视频在线观看 | 伊人官网| 水蜜桃亚洲一二三四在线 | 亚洲va男人天堂 | 欧美 激情 国产 91 在线 | 久久久国产一区二区 | 99久久超碰中文字幕伊人 | 久久福利| 国产精品精品 | 日韩高清不卡一区二区三区 | 97超碰超碰久久福利超碰 | 97精品国产97久久久久久免费 | 亚洲视频99| 中文字幕av最新更新 | 午夜视频在线观看一区 | 在线亚洲人成电影网站色www | 国产又粗又猛又黄视频 | 国产日韩欧美在线 | 久久久久久久久久久久电影 | 亚洲精品午夜视频 | 国产黄色大片 | 婷婷丁香在线视频 | 欧美精品一区在线 | 亚洲精品国产精品国自 | 久久伊人免费视频 | 涩涩在线 | 日韩欧美一区二区在线播放 | 精品免费观看视频 | 又湿又紧又大又爽a视频国产 | 久久99这里只有精品 | 天天插夜夜操 | 久久久久久高潮国产精品视 | 日日操网站 | 看av免费| 黄色一级免费网站 | 国产色啪 | 日本精品一区二区三区在线播放视频 | 91久久人澡人人添人人爽欧美 | 99精品国产免费久久久久久下载 | 欧美久久久久久久久久 | 久久一区二区三区国产精品 | 久久久久国产精品www | 99亚洲精品 | 999热视频 | 久久成人精品 | 日韩av网址在线 | 日本h在线播放 | 国产精品成人免费精品自在线观看 | 亚洲va欧洲va国产va不卡 | 999久久久久久久久 69av视频在线观看 | 久久久午夜精品理论片中文字幕 | 久久99精品久久久久久 | 久久综合五月婷婷 | 最新av免费在线观看 | 免费在线观看的av网站 | 国产精品亚洲视频 | 久久免费美女视频 | 欧美少妇18p| 日韩一区二区三区在线看 | 日韩欧美aaa | 欧美大片大全 | 久草在在线视频 | 日韩电影在线视频 | 一区二区欧美在线观看 | 免费碰碰| 成人一级免费电影 | 少妇性aaaaaaaaa视频 | 国产黄色片在线 | 国产精品18p| 色网免费观看 | 色偷偷网站视频 | 免费在线观看午夜视频 | av在线免费观看网站 | www.久久视频 | 国产精品一区二区62 | 亚洲国产精品电影 | 免费看黄色毛片 | 天堂中文在线视频 | 久久久久女教师免费一区 | 色88久久| 欧美日韩一区二区三区在线免费观看 | 一区二区精品在线 | 激情五月六月婷婷 | 激情文学综合丁香 | 四虎影视成人永久免费观看亚洲欧美 | 日日射av | 国产精品欧美久久久久三级 | 日本三级全黄少妇三2023 | 欧美综合在线视频 | 最近中文字幕在线播放 | 亚洲美女视频在线观看 | 亚洲成av人片一区二区梦乃 | 免费看污片 | 久久国产视屏 | 天天碰天天操视频 | 午夜国产影院 | 午夜久久福利视频 | 亚洲 欧洲 国产 日本 综合 | 免费观看的av网站 | 欧美成人亚洲成人 | 国产96av| 青青草视频精品 | 国产精品免费成人 | 国产精品一区二区吃奶在线观看 | 国产在线欧美 | 亚洲成人资源网 | 在线视频免费观看 | 国产网红在线 | 中文字幕无吗 | 中文av在线天堂 | 亚洲一二三久久 | 免费国产黄线在线观看视频 | 91成人免费观看视频 | 欧美日韩国产二区三区 | 97精产国品一二三产区在线 | 日本韩国中文字幕 | 国产不卡免费av | 国内99视频 | 看片网站黄色 | 欧美孕交vivoestv另类 | 四虎最新域名 | 国产精品丝袜久久久久久久不卡 | 亚洲高清精品在线 | 探花视频免费观看高清视频 | 久久国产日韩 | 热久久视久久精品18亚洲精品 | 久久精品国产成人精品 | 一区电影 | 免费av在线网站 | 久久久久久久久久久免费 | 99麻豆视频 | 天天操天天射天天插 | 久久免费看 | 91精品一区二区三区蜜桃 | 麻豆一区二区三区视频 | 91精品视频网站 | 一区二区中文字幕在线观看 | 91成人免费视频 | 日韩av黄| 日韩1级片 | 亚洲一区日韩在线 | 中文字幕网站视频在线 | 伊人网av | 国产亚洲精品久久久久久电影 | 五月亚洲 | 中文字幕123区 | 久久99精品热在线观看 | 人人插人人草 | 国产一级电影 | 天天av综合网| 成年人免费在线观看网站 | 黄色在线观看污 | 日本在线观看一区 | 碰天天操天天 | 天天射狠狠干 | 成人少妇影院yyyy | 国产一区视频在线播放 | 欧美精品免费在线 | av一区二区三区在线播放 | 在线 精品 国产 | 日本中文字幕视频 | 国产精品久久久久久久久软件 | 18久久久久 | 99久久日韩精品视频免费在线观看 | 国产成人一区二区三区久久精品 | 久久国际影院 | 久久男人免费视频 | 色狠狠综合天天综合综合 | 成年人免费看av | 久久亚洲影视 | 国产一区在线看 | 四季av综合网站 | 日韩在线短视频 | 香蕉影视| 夜夜躁狠狠躁日日躁 | 日韩久久久| 国产字幕av| 欧美日韩二区在线 | 日韩精品中文字幕久久臀 | 色噜噜狠狠狠狠色综合 | 亚洲综合视频在线观看 | 天天操天天添 | 天天操夜夜干 | 亚洲一区二区精品在线 | av不卡网站 | 五月天综合激情网 | 成人h电影 | 91入口在线观看 | 精品国产成人av在线免 | 国产无遮挡又黄又爽馒头漫画 | 日本精品一区二区在线观看 | 成人免费在线网 | 亚洲精品女 | 在线视频 国产 日韩 | 国产精品免费在线 | 国产美女免费 | 成人免费毛片aaaaaa片 | 色网站免费在线观看 | 免费观看91 | 三上悠亚一区二区在线观看 | 最新中文字幕视频 | 欧美午夜激情网 | 国产亚洲精品日韩在线tv黄 | 日日干日日色 | 国产精品s色 | 碰超在线97人人 | 久久免费视频99 | 免费观看第二部31集 | 精品国产一区二区三区在线观看 | 亚洲午夜精品久久久 | 一区二区三区手机在线观看 | av综合站 | 久久久国产一区二区三区四区小说 | 99视频在线免费 | 91亚洲国产成人 | 国际精品久久 | 日日操天天射 | 九草在线视频 | www黄色软件 | 国产视频中文字幕 | 香蕉久久国产 | 亚洲 在线 | 91人人干 | av中文字幕在线电影 | 欧美成人tv| 欧美另类色图 | 日韩大陆欧美高清视频区 | 欧美日韩中文在线 | 婷婷六月丁香激情 | 中文字幕在线免费观看 | 日韩av电影网站在线观看 | 中文字幕之中文字幕 | 91污视频在线观看 | 夜夜躁日日躁狠狠久久88av | 日韩高清成人 | 天天爽天天摸 | www国产一区 | 色婷久久 | 91精品色 | 天天色综合久久 | 4p变态网欧美系列 | 日韩av影视在线观看 | 国语精品久久 | 99热在线免费观看 | 欧美日韩高清一区二区 国产亚洲免费看 | av中文字幕网 | 免费看片日韩 | 玖玖爱免费视频 | 欧美大片mv免费 | 国产手机在线精品 | 国产精品成人久久久久 | 午夜视频播放 | 91精品国产自产在线观看永久 | 欧美成人一二区 | 天天色婷婷 | 伊人国产视频 | 91精品在线看 | 国产大尺度视频 | 丁香网婷婷 | 久久永久免费视频 | aaawww| www.av免费| 国产精品久久 | 黄色福利网 | 国产精品久久三 | 国产自产在线视频 | 欧美久久精品 | 国产99久久九九精品免费 | 日韩一级黄色片 | 美女黄频 | 日本少妇高清做爰视频 | 在线国产视频观看 | 亚洲欧美日韩国产精品一区午夜 | 精品一二| 日本久久成人中文字幕电影 | 不卡电影一区二区三区 | 国产一级免费在线观看 | 九9热这里真品2 | 国产午夜精品免费一区二区三区视频 | 色婷婷色 | 日韩丝袜在线 | 色网址99| 久久人91精品久久久久久不卡 | 亚洲成年人av | 伊人五月天综合 | 国产视频999| 久久久久久久久久久免费av | 久久久久国产成人精品亚洲午夜 | 五月婷婷视频在线观看 | 久久久精品网站 | 久久不色 | 国产在线一线 | 狠狠色丁香久久婷婷综合五月 | 黄色小说免费在线观看 | 亚洲精品久久久久久久不卡四虎 | 免费视频在线观看网站 | 久草精品视频在线播放 | 中文有码在线 | 亚洲精品午夜国产va久久成人 | 91九色性视频 | 中文有码在线 | 中文字幕电影在线 | 国产精品视频最多的网站 | 涩涩成人在线 | 一区二区三区四区五区在线视频 | 国内精品久久久久久久影视简单 | 成人手机在线视频 | 国产区网址 | 91cn国产在线| 人人爽人人搞 | 一区二区三区视频 | 亚洲精品99 | 天天干天天操天天干 | 成人精品电影 | 999电影免费在线观看 | 国产精品扒开做爽爽的视频 | 国产成人61精品免费看片 | 久影院| 91日韩在线专区 | 欧美日韩国产综合网 | 国产精品18久久久 | 亚洲黄色在线观看 | 日韩在线视频播放 | 日韩在线视频观看免费 | 亚洲三级网站 | 久99视频 | 亚洲成人精品在线 | 成人免费91 | 人人爽人人搞 | 欧美性性网| 精品在线视频一区二区三区 | 国产精品毛片久久久 | 激情综合网五月 | 日本公妇色中文字幕 | 欧美孕交vivoestv另类 | 贫乳av女优大全 | www夜夜操com | 色综合网| 91av在线免费播放 | 狠狠狠色丁香综合久久天下网 | va视频在线观看 | 伊人狠狠色丁香婷婷综合 | 国产成人久久精品一区二区三区 | 特级毛片在线 | 亚洲视频电影在线 | 日韩高清一二区 | 国产精品免费一区二区三区在线观看 | 麻豆视频在线免费 | 91视频麻豆视频 | 在线观看成人福利 | 亚洲另类在线视频 | 色综合久久久久综合体桃花网 | 日韩,精品电影 | 爱色av.com| 91精品老司机久久一区啪 | 麻豆精品视频 | av福利在线播放 | 中文字幕在线影院 | 国产精品久久久久久久久久三级 | 欧美黄在线 | 国产精品免费久久久久影院仙踪林 | 久久久精品午夜 | 国产精品成人av久久 | av免费在线观看网站 | 亚洲色图激情文学 | 免费看的毛片 | 久久免视频| 天天色天天射综合网 | 在线视频电影 | 久久久久久免费网 | 天天操天天操一操 | 中文有码在线 | 日韩在线中文字幕视频 | 日日干网址 | 欧美日韩国产高清视频 | 国产剧情亚洲 | 久久黄色影院 | 香蕉久久久久 | 激情综合网五月 | 91成版人在线观看入口 | 国产美女免费看 | 麻豆视频免费播放 | 亚洲在线成人精品 | 日日爽夜夜操 | 在线免费成人 | 在线中文字幕av观看 | 日韩黄色网络 | 久久久久久久国产精品 | 在线看片视频 | 亚洲一区二区视频在线 | 精品99视频 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 免费在线成人 | 综合色播| 国产精品一区一区三区 | 少妇bbb搡bbbb搡bbbb′ | 亚洲高清精品在线 | 欧美日高清视频 | 午夜视频在线观看一区二区三区 | a在线观看视频 | 成人福利av| 亚洲一级影院 | 午夜国产一区二区 | av一级片 | 91精品国产99久久久久久久 | 六月激情 | 99视频在线精品国自产拍免费观看 | 婷婷av电影| 久久免费毛片视频 | 天天射夜夜爽 | 色婷婷丁香 | 九九久久免费视频 | 欧美色图东方 | 97av免费视频 | 日韩高清在线一区二区三区 | 国产精品6| 91在线视频免费播放 | 国产99久久久国产精品免费看 | 精品一区二区三区电影 | 国产91影视 | 日韩一级电影网站 | 超碰精品在线观看 | 久久免费av | 91麻豆精品久久久久久 | 黄色软件视频网站 | 日韩三区在线观看 | 欧美激情综合五月色丁香 | 国产精品久久久久久久久久白浆 | 日批视频在线观看免费 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 国产福利91精品张津瑜 | 亚洲精品视频网站在线观看 | 91成人精品国产刺激国语对白 | 伊人狠狠色 | 日本黄色片一区二区 | 国内精品久久久久 | 国产成人一区二区啪在线观看 | 最近日韩免费视频 | 久久96国产精品久久99漫画 | 国产日产精品一区二区三区四区 | 91污在线| 99热这里只有精品免费 | 黄色av成人在线观看 | 九9热这里真品2 | 在线播放一区二区三区 | 欧美乱大交 | 伊色综合久久之综合久久 | 91视频成人免费 | 国产精品永久免费在线 | 精品视频一区在线观看 | 美女视频免费一区二区 | 色资源二区在线视频 | 日韩午夜剧场 | 视频一区二区免费 | 不卡av电影在线观看 | 色婷婷狠狠干 | 成人蜜桃网 | 国产成人久久精品77777综合 | 激情综合站 | 日韩在线色| www国产亚洲精品久久麻豆 | 99这里精品| 国产视频一二三 | 欧美一区二区日韩一区二区 | 欧美激情精品 | 日韩av影视在线观看 | 欧美日韩精品在线一区二区 | av在线播放不卡 | 国产精品毛片久久久久久久 | 日韩在线观看第一页 | 视频在线观看国产 | 伊人超碰在线 | 日日操日日 | 91久久电影| 中文字幕一区在线观看视频 | 久久久久国产精品视频 | 一级黄色免费 | 欧美了一区在线观看 | 日韩欧美电影网 | 欧美天天综合 | 久久艹在线观看 | 国产在线91在线电影 | 亚洲美女视频网 | 日韩国产精品久久久久久亚洲 | 黄色软件在线观看视频 | 96超碰在线 | 国语麻豆 | 日韩超碰在线 | 久久久久www | av黄色免费网站 | 亚洲特级毛片 | 最近中文字幕在线 | 亚洲国产一二三 | 色香天天 | 欧美极品xxx | 免费网站看v片在线a | 91麻豆国产福利在线观看 | 98久9在线 | 免费 | 久久夜夜操 | 蜜臀av夜夜澡人人爽人人桃色 | 免费观看一级视频 | 亚洲婷婷网 | 久久免费视频在线观看30 | 成人久久久久久久久 | 中文字幕高清在线 | 在线你懂 | 久久婷亚洲五月一区天天躁 | 国产色小视频 | 久久精品爱视频 | 99色视频在线 | 色网av| 国产精品第二页 | 亚洲国产中文在线 | 国产成人精品一区二区三区网站观看 | 久久亚洲在线 | 狠狠躁日日躁狂躁夜夜躁 | 亚洲aⅴ久久精品 | 玖玖玖精品 | 国产在线美女 | 久久九九影视网 | 亚洲一级特黄 | 国产精品一区二区三区在线播放 | 日本婷婷色 | 国产精品综合久久 | 欧美激情视频一区二区三区 | 亚洲天堂精品视频 | 国产成人精品久久二区二区 | 精品国产观看 | av黄色一级片 | v片在线看| 麻豆视频网址 | 亚洲久草在线 | 久久综合狠狠综合久久激情 | 日韩高清激情 | 91大神在线看 | 深夜免费小视频 | 天天射天天操天天色 | 国产中文字幕免费 | 五月天中文字幕mv在线 | 伊人成人久久 | 色综合久久中文综合久久牛 | 黄色免费视频在线观看 | 亚洲天堂网视频在线观看 | 国产成人精品一区二区三区免费 | 精品国产欧美一区二区三区不卡 | 97视频网址| 欧美一级黄大片 | 狠狠色丁香久久综合网 | 欧美在线视频一区二区 | 青草草在线 | 97人人射| av福利资源 | 久久九九精品久久 | 91精选| 欧美美女视频在线观看 | 国产成人在线免费观看 | 亚洲精品国产视频 | 久久久麻豆 | 亚洲作爱 | 欧美精品一区二区蜜臀亚洲 | 欧美吞精 | 亚洲精品视频在线观看网站 | 久久视频在线视频 | 丁香视频全集免费观看 | 国产h片在线观看 | 超碰人人舔 | 中文字幕av在线电影 | 亚洲精品字幕 | 丁香婷婷深情五月亚洲 | 成人综合婷婷国产精品久久免费 | 日韩精品免费一线在线观看 | 999视频网站 | 日韩精品久久一区二区 | 黄色免费看片网站 | 成年人黄色免费网站 | 在线观看精品视频 | 国产精品婷婷午夜在线观看 | 激情欧美国产 | 色妞色视频一区二区三区四区 | 色姑娘综合天天 | 午夜色大片在线观看 | 久草在线中文视频 | 91九色在线播放 | 午夜精品久久久久久久爽 | 9色在线视频 | 又大又硬又黄又爽视频在线观看 | 国产精品福利无圣光在线一区 | 国产精品成人免费精品自在线观看 | 精品国产电影一区二区 | 一区二区三区视频网站 | 91一区啪爱嗯打偷拍欧美 | 久久亚洲私人国产精品 | 超碰在线成人 | 国产精品一区二区av麻豆 | 天天插天天射 | 在线观看视频91 | 丁香婷婷射 | 麻豆影视网 | 中文高清av | 69精品视频在线观看 | 国产精品大全 | 国产日产精品一区二区三区四区的观看方式 | 精品美女国产在线 | 久久精品一区二区三区四区 | 国产精品一区二区av | 最新国产在线观看 | 欧洲激情在线 | 国产精品精品国产婷婷这里av | 西西人体4444www高清视频 | 国产精品免费久久 | 久久午夜国产精品 | 97色噜噜| 岛国片在线 | 九九九在线观看 | 亚洲最大成人网4388xx | 美女网站色在线观看 | 久久免费视频这里只有精品 | 亚州人成在线播放 | 99免费在线 | 天天综合网入口 | 国产精品久久久久一区 | 国产一区二区中文字幕 | 免费在线国产视频 | 中文字幕在线中文 | www视频免费在线观看 | 天天天操天天天干 | 欧美日韩中文在线 | 97超碰在线播放 | 在线观看完整版 | av成人免费在线 | 亚洲国产剧情 | 亚洲午夜精品一区二区三区电影院 | 午夜黄网| 亚洲黄色免费在线 | 色播激情五月 | 亚洲激情影院 | 91理论电影 | 天堂网在线视频 | 一区二区三区韩国免费中文网站 | 欧美视频不卡 | 久久好看免费视频 | 亚洲国产人午在线一二区 | 中文字幕中文字幕在线中文字幕三区 | 久久亚洲二区 | 中文伊人 | 久久久精品国产一区二区 | 91精品国产高清 | 亚洲香蕉视频 | 亚洲精品男人天堂 | 久久成人免费 | 97在线观 | 亚洲专区在线播放 | 91成人免费在线视频 | 欧美日韩不卡在线观看 |