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

技術熱點:RESTful API 最佳實踐

開發 后端
在參考了GitHub API設計和大量博客文章后總結了一下RESTful API的設計,分享如下。想要更好的理解RESTful API首先需要理解如下概念:

在參考了GitHub API設計和大量博客文章后總結了一下RESTful API的設計,分享如下。想要更好的理解RESTful API首先需要理解如下概念:

REST:REST(Representational State Transfer)這個詞,是Roy Thomas Fielding在他2000年的博士論文中提出的,翻譯成中文大意為表現層狀態傳輸。由于他是HTTP協議(1.0版和1.1版)的主要設計者、Apache服務器軟件的作者之一、Apache基金會的***任主席,所以REST原則迅速流行起來。當一個軟件架構符合REST原則,我們稱之為RESTful架構。說了這么多,我們為什么要使用RESTful架構?使用RESTful架構有什么好處?因為按照RESTful架構可以充分的利用HTTP協議帶給我們的各種功能,算是對HTTP協議使用的***實踐,還有一點就是可以使軟件架構設計更加清晰,可維護性更好,但是并不是所有情況都需要完全遵守REST原則,畢竟實際情況遠遠比REST原則所定義的更加復雜,下面會詳細介紹。

冪等性:冪等性(Idempotence)本身是一個數學概念,在HTTP/1.1規范中冪等性的定義是:

Methods can also have the property of “idempotence” in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.

翻譯過來大意就是如果方法調用一次和多次產生額外的效果是相同的,它就具有冪等性。

例子:在HTTP中使用GET方法通常用于從服務器獲取資源,無論調用多少次產生的額外效果都是從服務器獲取資源,所以GET具有冪等性;而POST方法通常用于提交數據在服務器上創建一個資源,由于最終創建的結果每次都是不同的,所以POST不具有冪等性;但是PUT方法卻是冪等的,因為每次調用產生的效果都是對資源進行更新。

安全方法:安全方法是指不修改資源的 HTTP 方法。譬如,當使用 GET 或者 HEAD 作為資源 URL,都必須不去改變資源。然而,這并不全準確。意思是:它不改變資源的 表示形式。對于安全方法,它仍然可能改變服務器上的內容或資源,但這必須不導致不同的表現形式。

有關HTTP常用方法冪等性和安全性如下:

RESTful API設計規則:

1. URI

  • 應該將API部署在專用域名之下:https://api.example.com
  • 不用大寫
  • 用中杠-不用下杠_;
  • 參數列表要encode;
  • URI中不應該出現動詞,動詞應該使用HTTP方法表示,但是如果無法表示,也可使用動詞,例如:search沒有對應的HTTP方法,可以在路徑中使用search,更加直觀;
  • URI中的名詞表示資源集合,使用復數形式;
  • 雖然/在URI中表達層級,但是避免為了追求REST導致層級過深,適當使用參數表示。
    GET /comments/tid/tid=1&page=1

2. Request:通過標準HTTP方法對資源CRUD

  • GET:查詢資源
    GET /comments //獲取所有評論 GET /comments/tid/1 //獲取文章tid為1的所有評論
  • POST:創建資源
    POST /comments/tid/1 //為tid為1的文章創建評論
  • PUT:更新資源
    PUT /comments/cid/like/1 //為cid為1的評論點贊
  • DELETE:刪除資源
    DELETE /comments/cid/1 //刪除cid為1的評論

3. Response

  • 采用JSON,不要使用XML
  • 默認情況下JSON外層不需要嵌套大括號,API需要支持JSONP跨域訪問或者客戶端無法訪問HTTP Header才需要加上嵌套大括號
  • 默認情況下不要過濾API輸出中的空格,并且要支持gzip

4. API版本控制

  • 在URI中存放:GET /v1/comments;
  • 客戶端在Accept Header中存放:Accept: application/vnd.github.v3+json,服務器自定義Header返回當前版本信息:X-GitHub-Media-Type: github.v3; format=json(GitHub在用);
  • 以上兩種方法根據情況選擇,Github用的方式是REST中所要求的方式;
  • 測試API和正式API要進行區分,方式通過如上兩種方式實現。

5. 速度限制

為了避免請求泛濫,給API設置速度限制很重要。為此 RFC 6585 引入了HTTP狀態碼429(too many requests)。加入速度設置之后,應該提示用戶,至于如何提示標準上沒有說明,不過流行的方法是使用HTTP的返回頭。
下面是幾個必須的返回頭(依照twitter的命名規則):

  • X-Rate-Limit-Limit :當前時間段允許的并發請求數
  • X-Rate-Limit-Remaining:當前時間段保留的請求數。
  • X-Rate-Limit-Reset:當前時間段剩余秒數

為什么使用當前時間段剩余秒數而不是時間戳?

時間戳保存的信息很多,但是也包含了很多不必要的信息,用戶只需要知道還剩幾秒就可以再發請求了這樣也避免了clock skew問題。

6.緩存

HTTP提供了自帶的緩存框架。你需要做的是在返回的時候加入一些返回頭信息,在接受輸入的時候加入輸入驗證。基本兩種方法:

  • ETag:當生成請求的時候,在HTTP頭里面加入ETag,其中包含請求的校驗和和哈希值,這個值和在輸入變化的時候也應該變化。如果輸入的HTTP請求包含IF-NONE-MATCH頭以及一個ETag值,那么API應該返回304 not modified狀態碼,而不是常規的輸出結果。
  • Last-Modified:和etag一樣,只是多了一個時間戳。返回頭里的Last-Modified:包含了 RFC 1123 時間戳,它和IF-MODIFIED-SINCE一致。HTTP規范里面有三種date格式,服務器應該都能處理。

7.覆蓋HTTP方法

一些HTTP客戶端只支持GET和POST請求。為了能夠加強這些客戶端的訪問能力,API需要能夠覆蓋HTTP方法。盡管這里沒有任何強制的標準,但流行的做法是API會接收一個請求頭X-HTTP-Method-Override,它的值可以是PUT、PATCH或者DELETE三者之一。

注意,用來覆蓋HTTP方法的header只能在POST請求中被接受。GET請求永遠不能修改服務器上的數據。

8.過濾信息

如果記錄數量很多,服務器不可能都將它們返回給用戶。API應該提供參數,過濾返回結果。

下面是一些常見的參數:

?limit=10:指定返回記錄的數量
?offset=10:指定返回記錄的開始位置。
?page=2&per_page=100:指定第幾頁,以及每頁的記錄數。
?sortby=name&order=asc:指定返回結果按照哪個屬性排序,以及排序順序。
?animal_type_id=1:指定篩選條件

就像HTML的出錯頁面向訪問者展示了有用的錯誤消息一樣,API也應該用之前熟悉易讀的格式來提供有用的錯誤消息。錯誤的表現形式應該跟其他資源保持一致,只是用一些自己的字段。

API應該一直返回合理的HTTP狀態碼。API錯誤一般情況下分成兩類:代表客戶端錯誤的400系列狀態碼和代表服務端錯誤的500系列狀態碼。API至少把所有400系列錯誤統一用易讀的JSON格式來展示。如果可能(比如,如果負載均衡和反向代理能夠創建自定義錯誤內容的話),500系列的狀態碼也這么弄。

JSON錯誤內容應該為開發者提供一些東西 – 有用的錯誤消息,唯一的錯誤碼(通過它可以在文檔中找到更多錯誤細節),可能的話提供錯誤細節描述。用JSON格式來輸出錯誤看起來這樣:

{
  "code" : 1234,
  "message" : "Something bad happened : (",
  "description" : "More details about the error here"
}

對于PUT、PATCH和POST的請求進行的校驗錯誤需要嵌套多個字段。***做法是用固定的錯誤碼來表示校驗失敗,然后在額外的errors字段中提供錯誤的細節,像這樣:

{
  "code" : 1024,
  "message" : "Validation Failed",
  "errors" : [
    {
      "code" : 5432,
      "field" : "first_name",
      "message" : "First name cannot have fancy characters"
    },
    {
       "code" : 5622,
       "field" : "password",
       "message" : "Password cannot be blank"
    }
  ]
}

10.HTTP狀態碼

HTTP定義了很多有意義的狀態碼,你可以在你的API中使用。這些狀態碼可以幫助API消費者用來路由它們獲取到的響應內容。整理了一個你肯定會用到的狀態碼列表:

  • 200 OK – 對成功的GET、PUT、PATCH或DELETE操作進行響應。也可以被用在不創建新資源的POST操作上
  • 201 Created – 對創建新資源的POST操作進行響應。應該帶著指向新資源地址的Location header)
  • 204 No Content – 對不會返回響應體的成功請求進行響應(比如DELETE請求)
  • 304 Not Modified – HTTP緩存header生效的時候用
  • 400 Bad Request – 請求異常,比如請求中的body無法解析
  • 401 Unauthorized – 沒有進行認證或者認證非法。當API通過瀏覽器訪問的時候,可以用來彈出一個認證對話框
  • 403 Forbidden – 當認證成功,但是認證過的用戶沒有訪問資源的權限
  • 404 Not Found – 當一個不存在的資源被請求
  • 405 Method Not Allowed – 所請求的HTTP方法不允許當前認證用戶訪問
  • 410 Gone – 表示當前請求的資源不再可用。當調用老版本API的時候很有用
  • 415 Unsupported Media Type – 如果請求中的內容類型是錯誤的
  • 422 Unprocessable Entity – 用來表示校驗錯誤
  • 429 Too Many Requests – 由于請求頻次達到上限而被拒絕訪問

11.認證

RESTful API應該是無狀態。這意味著對請求的認證不應該基于cookie或者session。相反,每個請求應該帶有一些認證憑證。

如果一直使用SSL,認證憑證可以簡單的使用隨機生成的access token,把其做為HTTP Basic Auth中user name字段的值傳給API。這么做的好處是可以通過瀏覽器訪問 – 如果瀏覽器從服務器收到401 Unauthorized狀態碼,它將會彈出一個對話框讓人輸出認證憑證。

當然,這種基于token來進行基本認證的方法只能當用戶從API管理后臺拷貝了一個token到自己的代碼中才行。如果搞不到token,只能使用OAuth 2來把安全token傳遞給第三方。OAuth 2使用Bearer token,并且也是基于SSL來保證傳輸安全。

支持JSONP的API可能需要第三種方法來實現認證,因為JSONP的請求沒法發送HTTP Basic Auth憑證或者Bearer token。這種情況下,可以使用一個額外的查詢參數access_token。注意:使用查詢參數來傳遞token存在一個固有的安全隱患,因為大多數web服務器會在服務器日志中保存查詢參數。

不管怎么樣,以上三種方法是用來在API之間傳輸token的方法。實際傳輸的token可以是一樣的。

12.使用SSL

一定要使用SSL。沒有例外。如今,你的web API可以從任何有互聯網的地方(像圖書館,咖啡館,機場等等)被訪問到。這些地方并不都是安全的。很多地方根本沒有對網絡連接進行加密,如果認證憑證被劫持的話,這樣訪問者很容易被竊聽或者被冒充。

一直使用SSL的另一個優勢是,加密的連接簡化了用戶認證的工作 – 你可以使用簡單的access token,而不需要對每個API請求進行簽名。

需要注意的一件事是以非SSL的形式訪問API的URL。不要把請求跳轉到它們的SSL版本上。直接拋出一個嚴重錯誤!

13.Hypermedia API

RESTful API***做到Hypermedia,即返回結果中提供鏈接,連向其他API方法,使得用戶不查文檔,也知道下一步應該做什么。
比如,當用戶向http://api.example.com的根目錄發出請求,會得到這樣一個文檔。

{"link": {
  "rel":   "collection https://www.example.com/comments",
  "href":  "https://api.example.com/comments",
  "title": "List of comments",
  "type":  "application/vnd.yourformat+json"
}}

上面代碼表示,文檔中有一個link屬性,用戶讀取這個屬性就知道下一步該調用什么API了。rel表示這個API與當前網址的關系(collection關系,并給出該collection的網址),href表示API的路徑,title表示API的標題,type表示返回類型。
Hypermedia API的設計被稱為HATEOAS。

在進行分頁查詢時可以返回下一頁的URI,如果沒有說明服務器已經取到***一條數據了,客戶端可以減少不必要的請求以及URI的構造,建議在分頁的情況下使用。

這就是我總結出來的RESTful API的***設計實踐,文章如果有紕漏,歡迎指出。

責任編輯:張燕妮 來源: 王東堯
相關推薦

2013-06-13 09:21:31

RESTful APIRESTfulAPI

2016-12-27 08:49:55

API設計策略

2022-05-13 08:17:05

HTTPRESTful架構

2023-11-07 07:08:57

2016-01-13 09:25:47

jQuery最佳實踐

2014-04-18 10:58:44

AndroidAPI實踐

2018-12-04 09:00:00

API安全性令牌

2009-07-07 16:13:39

JDK日志

2017-04-27 10:33:50

云計算

2023-04-14 12:23:15

2023-02-06 18:35:05

架構探測技術

2011-08-18 11:05:21

jQuery

2023-07-21 01:12:30

Reactfalse?變量

2024-05-13 13:13:13

APISpring程序

2023-12-06 07:13:16

RESTAPI客戶端

2017-02-16 08:36:24

API威脅機器學習

2024-03-08 10:50:44

Spring技術應用程序

2012-08-09 09:10:56

代碼審查代碼

2014-06-09 15:50:08

2024-08-21 08:02:47

點贊
收藏

51CTO技術棧公眾號

欧美日韩久久不卡| 中文字幕永久在线不卡| 91国产美女视频| 日韩丰满少妇无码内射| 91精品一久久香蕉国产线看观看| 亚洲尤物在线视频观看| 欧美激情第一页在线观看| 69久久久久久| 最新国产露脸在线观看| 99国产精品久久| 91精品国产综合久久香蕉| 久久网中文字幕| 日本道不卡免费一区| 欧美成人一区二区三区| 久久久久国产精品熟女影院| 宅男网站在线免费观看| 国产午夜精品福利| 成人精品一二区| 最新中文字幕免费| 9久re热视频在线精品| 尤物yw午夜国产精品视频| 免费无码毛片一区二三区| 成a人片在线观看www视频| 国产98色在线|日韩| 国产精品亚洲精品| 一级成人黄色片| 亚洲人成免费| 美女av一区二区| 超薄肉色丝袜一二三| 国产毛片久久久| 7777精品伊人久久久大香线蕉 | 日韩成人精品一区| 疯狂欧美牲乱大交777| 国产三级精品在线不卡| 91超薄丝袜肉丝一区二区| 欧美亚洲视频| 91精品国产91久久久| 中文字幕人妻一区二| 日本高清久久| 欧美日韩不卡视频| 我看黄色一级片| 在线观看精品| 色综合久久久久综合99| www.日本在线播放| 国产探花在线观看| 一区二区在线观看av| 一本二本三本亚洲码| 国产chinasex对白videos麻豆| 日本伊人午夜精品| 国产精品成人国产乱一区| 久久中文字幕免费| 久久国产一二区| 庆余年2免费日韩剧观看大牛| 欧美三级视频网站| 国内精品久久久久久久影视简单 | 欧美香蕉大胸在线视频观看| 免费成人午夜视频| 波多野结衣视频一区二区| 亚洲一区二区三区美女| 给我免费播放片在线观看| 福利写真视频网站在线| 亚洲图片自拍偷拍| 妞干网在线视频观看| 欧洲一区精品| 91传媒视频在线播放| 亚洲精品国产一区| 视频三区在线| 亚洲欧美视频在线观看视频| 一区二区不卡在线视频 午夜欧美不卡'| 国产91麻豆视频| 成人免费高清视频| 久久亚洲免费| av在线女优影院| 亚洲欧美在线高清| 欧美精品在欧美一区二区| av今日在线| 91久久久免费一区二区| 女同激情久久av久久| 日韩在线观看中文字幕| 亚洲国产小视频| av黄色在线免费观看| 99久久夜色精品国产亚洲1000部| 欧美成人精品一区| 天天插天天操天天干| 四季av一区二区凹凸精品| 久久五月天综合| 精品人妻无码一区二区三区换脸| 欧美美女视频| 欧美激情久久久久| 中文字幕一区在线播放| 精品一区二区三区视频在线观看| 国产精品日韩高清| porn亚洲| 亚洲一区二区三区四区在线 | 久久国产乱子精品免费女| 91九色蝌蚪成人| 你懂的在线免费观看| 国产精品色婷婷久久58| 男女日批视频在线观看| 日本在线中文字幕一区二区三区| 欧美一级黄色大片| xxxx日本免费| 国产精品啊v在线| 久久精品亚洲国产| 激情五月色婷婷| 久久99日本精品| 久久精品日产第一区二区三区| av免费在线不卡| 97久久超碰国产精品电影| 亚洲精品tv久久久久久久久| av日韩国产| 欧美亚洲高清一区| 成年人的黄色片| 亚洲精品成人影院| 国产精品久久久一区| 手机看片一区二区| 夜夜爽夜夜爽精品视频| 日韩av卡一卡二| 视频91a欧美| 日韩av影视在线| 青青操视频在线播放| 日本亚洲一区二区| 精品一卡二卡三卡四卡日本乱码| 成人高清免费在线| 欧美日韩国产一级二级| 右手影院亚洲欧美| 亚洲茄子视频| av成人在线电影| 网友自拍视频在线| 欧洲国产伦久久久久久久| 国产精品探花一区二区在线观看| 欧美日韩精品| 97超级在线观看免费高清完整版电视剧| 黄色av免费在线看| 欧美日韩一区二区精品| 日本五十肥熟交尾| 在线看片成人| 国产日韩精品久久| 黄页网站在线| 亚洲精品在线免费观看视频| 中文字幕在线观看成人| 韩国午夜理伦三级不卡影院| 91黄在线观看| 毛片免费不卡| 在线播放视频一区| 黄色录像免费观看| 国产一区二区免费在线| 国产精品99久久久久久大便| 日本精品久久| y97精品国产97久久久久久| 一级片在线观看视频| 国产精品欧美久久久久无广告| 亚洲国产精品三区| 91一区二区| 成人在线中文字幕| 婷婷久久久久久| 五月激情六月综合| 最近中文字幕无免费| 国产亚洲一级| 日韩精品国内| 日本久久一区| 欧美激情欧美激情在线五月| 黄色av网站免费在线观看| 亚洲国产成人av| 亚洲激情 欧美| 久久精品网址| 在线成人av电影| 日本99精品| 欧美在线性爱视频 | 激情六月丁香婷婷| 3d动漫一区二区三区在线观看| 最近2019中文字幕大全第二页 | 亚洲一卡二卡三卡| 亚洲高清国产拍精品26u| 欧美成人午夜剧场免费观看| 刘玥91精选国产在线观看| 欧美日韩国产中字| 亚洲毛片亚洲毛片亚洲毛片| 国产一区二区三区蝌蚪| 国产资源在线视频| 第一会所亚洲原创| 99re在线视频观看| 亚洲精品动漫| 久久久精品免费| 日日夜夜精品免费| 欧美色图12p| 久草视频手机在线观看| 日本不卡123| 国产免费xxx| 欧美大片网址| 久久久久久久电影一区| 偷拍25位美女撒尿视频在线观看| 亚洲精品高清在线| 无码人妻精品一区二区三应用大全| 麻豆精品久久久| 精品视频免费在线播放| 99re6这里只有精品| 精品一区久久| 国产aa精品| 欧美洲成人男女午夜视频| 国产丝袜在线| 亚洲人永久免费| www.蜜臀av.com| 欧美午夜一区二区三区| 国产精品1000| 成人一级视频在线观看| 成人在线激情网| 午夜国产精品视频| 亚州欧美一区三区三区在线| 国产精品18hdxxxⅹ在线| 国产在线视频2019最新视频| 黄视频免费在线看| 精品国产网站地址| 精品推荐蜜桃传媒| 亚洲第一区第二区| av中文字幕播放| 欧美特级限制片免费在线观看| 国产在线拍揄自揄拍| 中文字幕中文字幕一区二区| 97超碰在线免费观看| 9色porny自拍视频一区二区| 亚洲无在线观看| 美女在线一区二区| 国产欧美高清在线| 在线综合亚洲| 国产日韩av网站| 国产精品国码视频| 免费在线精品视频| 日本久久精品| 日韩精品欧美一区二区三区| 免费萌白酱国产一区二区三区| 91国产丝袜在线放| 精品成人18| 91精品国产91久久久| 性爱视频在线播放| 久久夜色撩人精品| 免费观看在线黄色网| 国产午夜精品视频| 国产在线超碰| 一区二区欧美亚洲| 国产h在线观看| 国产一区二区黄| 九色视频在线播放| 在线电影av不卡网址| 国产在线网站| 一区二区欧美亚洲| 最新97超碰在线| 深夜福利亚洲导航| 黄色在线视频网站| 久久亚洲国产精品成人av秋霞| 黄视频在线观看网站| 九九热精品视频国产| 免费毛片在线看片免费丝瓜视频| 九九久久国产精品| 久久电影网站| 91超碰中文字幕久久精品| 在线高清av| 国产激情久久久| 97精品国产99久久久久久免费| 国产精品入口尤物| 国产电影一区二区| 懂色av一区二区三区在线播放| 激情视频极品美女日韩| 九九九久久久| 精品久久网站| 亚洲av综合色区| 日韩天天综合| 亚洲精品高清无码视频| 久久超碰97中文字幕| 自拍视频第一页| 91蜜桃免费观看视频| wwwww黄色| 一区二区欧美精品| 国产免费av一区| 欧美高清你懂得| 久久精品视频5| 欧美手机在线视频| 精品人妻一区二区三区麻豆91| 亚洲精品国产欧美| 自拍视频在线网| 国模精品一区二区三区色天香| a日韩av网址| 91精品国产综合久久香蕉| 国产成人av毛片| 日韩欧美激情一区二区| 欧美黄在线观看| 成人在线看视频| 国产一区二区0| 法国空姐电影在线观看| 亚洲美女免费在线| 99久久久久久久久| 欧美一级xxx| 福利片在线观看| 欧美日韩成人网| 成人免费视频观看| 亚洲字幕一区二区| 国产一区二区在线观| 九九九九九精品| 亚洲欧美综合久久久| 成人在线激情网| 成人短视频下载| 性活交片大全免费看| 国产三级精品三级| 久久这里只有精品免费| 欧美日韩视频第一区| 午夜黄色小视频| 亚洲精品suv精品一区二区| 91福利在线视频| 91精品国产91| 2020最新国产精品| 一区二区精品免费视频| 午夜在线一区二区| 久久国产劲爆∧v内射| 中文字幕一区二区不卡| 欧美啪啪小视频| 亚洲国产成人精品女人久久久 | 91精品国产91久久久久| 免费看日产一区二区三区| 色女人综合av| 天堂蜜桃91精品| 中文字幕5566| 亚洲国产精品久久人人爱蜜臀| 国产精品一区二区三区在线免费观看 | 欧美在线视频免费播放| 98视频精品全部国产| 日韩视频在线观看视频| 久久99精品国产麻豆婷婷洗澡| av小说在线观看| 精品国产福利视频| 黄色片一区二区三区| 欧美激情18p| 中文在线免费一区三区| 日韩精品一区二区三区电影| 久久精品72免费观看| 国产精久久一区二区三区| 日韩欧美一区二区三区久久| 午夜视频福利在线| 欧美一级片一区| 小嫩嫩12欧美| 日韩a在线播放| 久久久无码精品亚洲日韩按摩| 久久久精品免费看| 欧洲人成人精品| 国产视频第一页在线观看| 国产91色在线| 国产一区二区三区四区大秀| 欧美激情国产精品日韩| 久久久久国产成人精品亚洲午夜| 69成人免费视频| 亚洲视频电影图片偷拍一区| 欧美精品资源| 亚洲一区二区三区色| 久久国产精品色| 免费视频一二三区| 亚洲国产一区自拍| 成人性生活av| 亚洲欧美影院| 韩国精品在线观看| 久久97人妻无码一区二区三区| 亚洲精品在线观看网站| gay欧美网站| 亚洲人久久久| 国产精品1024| 五月天综合激情网| 国产亚洲欧洲黄色| 国产日韩在线观看视频| 人体内射精一区二区三区| 92精品国产成人观看免费| 久久精品视频2| 久久好看免费视频| 久久久久97| 9久久婷婷国产综合精品性色| 成人免费毛片高清视频| 在线视频一区二区三区四区| 少妇高潮 亚洲精品| 免费观看亚洲天堂| 精品国产免费av| 国产精品盗摄一区二区三区| www.激情五月| 国产成人在线亚洲欧美| 亚洲国产一成人久久精品| 欧美肉大捧一进一出免费视频| 日本高清视频一区二区| 69xxx在线| 欧美高清视频一区| 国产一区二区三区蝌蚪| 国产三级av片| 久久电影一区二区| 亚洲免费成人av在线| 捷克做爰xxxⅹ性视频| 精品日韩美女的视频高清| 午夜伦理在线| 另类欧美小说| 国产福利精品一区| 成人一级免费视频| 久久青草福利网站| 欧美a级片视频| a级大片在线观看| 日韩写真欧美这视频| 69堂精品视频在线播放|