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

用 Go 創建一個 Web 應用

開發 前端
如果你看到上面的結果,你已經成功地創建了你的第一個 Golang 網絡和文件服務器。恭喜!如果您想進一步探索 Golang Web 服務器,Golang HTTP 包文檔中有很多很好的例子。

客戶端/服務器

假設你開發了一個使用 Go 語言編寫的程序來管理你的照片庫,這個程序可以在你的電腦上處理你的照片。你可能想與其他家庭成員分享這些照片,為此,你可以通過電子郵件發送包含所有照片的附件。但如果你拍了一萬張照片,這種解決方案可能是不可行的。

您可以將內容自動上傳到您最喜愛的社交網絡。如果您必須一次處理一張照片,該操作可能會變得非常耗時。另一種解決方案可能是將您的程序直接插入社交網絡系統,以編程方式上傳圖片。

我們可以借助社交網絡公開的 API 來做到這一點。您可以通過直接調用它們的 API 將圖片推送到 for 循環中。

在這種情況下,您將使用一個 API。你是客戶端。社交網絡代表服務器。

調用 API 意味著按照精確的文檔向 Web 服務器發出 HTTP(s) 請求。客戶端和服務器這兩個術語很重要,您必須記住它們。作為客戶端,我們使用(或消費)API。服務器是一個計算機程序,旨在接受和響應客戶端的 API 調用。

圖片

Go 語言在創建簡單高效的 Web 服務器方面很有優勢。Go 語言提供了內置的 HTTP 包,其中包含了快速創建 Web 或文件服務器所需的實用工具。這使得使用 Go 語言創建 Web 服務器和 Web 服務變得簡單和高效。

創建 server.go 文件

在上一篇文章中,我們學習了 net/http 包中的 Request 和 Response ,所以這里我們可以直接使用:

package main

import (
 "fmt"
 "log"
 "net/http"
)

func main() {

  http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
   fmt.Fprintf(w, "Hello!")
  })

 fmt.Printf("Starting server at port 8088\n")

 if err := http.ListenAndServe(":8088", nil); err != nil {
  log.Fatal(err)
 }
}

運行 go run server.go ,可以在終端上看到如下輸出:

Starting server at port 8088

在此階段,我們將創建一個實際在端口 8088 上提供服務并可以響應傳入 GET 請求的 Web 服務器。讓我們在端口 8088 啟動 Web 服務器。ListenAndServe() 方法由我們在第一步中導入的 http 數據包導出。此方法允許我們啟動 Web 服務器并指定端口以偵聽傳入請求。請注意,端口參數需要作為以冒號標點符號開頭的字符串傳遞。第二個參數接受一個處理程序來為 HTTP/2 配置服務器,將 nil 作為第二個參數傳遞。

我們將使用 HandleFunc() 函數將路由處理程序添加到 Web 服務器。第一個參數接受它需要監聽的路徑 /hello。在這里,您告訴服務器監聽對 http://localhost:8088/hello 的任何傳入請求。第二個參數接受一個函數,該函數包含正確響應請求的業務邏輯。

默認情況下,此函數接受 ResponseWriter 以發回響應,并接受 Request 對象以提供有關請求本身的更多信息。例如,您可以訪問有關已發送標頭的信息,這對于驗證請求很有用。

圖片

如您所見,處理程序發送了一個“Hello!”消息,因為我們將此響應傳遞給 ResponseWriter。

路由添加基本校驗

不用說,安全很重要。讓我們探索一些增強 Go Web 服務器安全性的基本策略。在我們這樣做之前,我們應該花點時間來提高代碼的可讀性。讓我們創建 helloHandler 函數,它包含與 /hello 請求相關的所有邏輯。

func helloHandler(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/hello" {
        http.Error(w, "404 not found.", http.StatusNotFound)
        return
    }

    if r.Method != "GET" {
        http.Error(w, "Method is not supported.", http.StatusNotFound)
        return
    }


    fmt.Fprintf(w, "Hello!")
}

此處理程序使用 Request 對象檢查請求的路徑是否正確。這是一個非常基本的示例,說明如何使用 Request 對象。

如果路徑不正確,服務器將向用戶返回 StatusNotFound 錯誤。要向用戶寫入錯誤,您可以使用 http.Error 方法。請注意,StatusNotFound 代碼對應于 404 錯誤。所有狀態代碼都可以在 Golang 文檔中找到。

接下來,我們添加一個檢查來驗證請求的類型。如果該方法不對應于 GET,則服務器返回一個新錯誤。當兩個檢查都通過時,服務器返回其成功響應“Hello!”。

我們需要做的最后一件事是修改 main() 函數中的 handleFunc 函數以接受上面的 helloHandler 函數。

http.HandleFunc("/hello", helloHandler)

完整的 server.go 文件如下:

package main

import (
 "fmt"
 "log"
 "net/http"
)

func helloHandler(w http.ResponseWriter, r *http.Request) {
 if r.URL.Path != "/hello" {
  http.Error(w, "404 not found", http.StatusNotFound)
  return
 }

 if r.Method != "GET" {
  http.Error(w, "Method is not supported", http.StatusNotFound)
  return
 }

 fmt.Fprintf(w, "Hello!")
}

func main() {

 http.HandleFunc("/hello", helloHandler)

 fmt.Printf("Starting server at port 8088\n")

 if err := http.ListenAndServe(":8088", nil); err != nil {
  log.Fatal(err)
 }
}

接下來,我們將使用 go run server.go 啟動 Go Web 服務器。您可以使用 Postman 或 cURL 等工具向 http://localhost:8088/hello 發送 POST 請求來測試您的安全性。我們將得到與上一次相同的結果。

啟動靜態 Web 服務器

在這一步中,我們將創建一個簡單的文件服務器來托管靜態文件。這將是對 Web 服務器的一個非常簡單的添加。為確保我們有內容可在 Web 服務器上提供服務,讓我們新建一個位于 static 文件夾中的 index.html 文件。為了簡單起見,只需在文件中添加一個標題為“Go Server”的標題。如果您愿意,可以添加更多文件或樣式文件以使您的 Web 服務器看起來更漂亮一些。

新建一個 index.html 文件:

<html>
  <head>
    <title>Learn Go</title>
  </head>
  <body>
    <h2>Go Server</h2>
  </body>
</html>

要為 static 文件夾提供服務,您必須向 server.go 添加兩行代碼。第一行代碼使用 FileServer 函數創建文件服務器對象。此函數接受 http.Dir 類型的路徑。因此,我們必須將字符串路徑“./static”轉換為 http.Dir 路徑類型。

不要忘記指定 Handle 路由,它接受路徑和文件服務器。此函數的作用與 HandleFunc 函數相同,但有一些細微差別。有關 FileServer 對象的更多信息,請查看文檔。

func main() {
    fileServer := http.FileServer(http.Dir("./static")) 
    http.Handle("/", fileServer)
    http.HandleFunc("/hello", helloHandler)


    fmt.Printf("Starting server at port 8088\n")
    if err := http.ListenAndServe(":8088", nil); err != nil {
        log.Fatal(err)
    }
}

是時候嘗試代碼了。使用 go run server.go 啟動服務器并訪問 http://localhost:8088/。你應該看到:

圖片

接受表單提交 POST 請求

最后,Web 服務器必須響應表單提交。讓我們向 static 文件夾中的 form.html 文件添加一些內容。請注意,表單操作已發送到 /form。這意味著來自表單的 POST 請求將被發送到 http://localhost:8088/form。表單本身要求輸入兩個變量:name 和 address。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <div>
      <form method="POST" actinotallow="/form">
        <label>Name</label><input name="name" type="text" value="" />
        <label>Address</label><input name="address" type="text" value="" />
        <input type="submit" value="submit" />
      </form>
    </div>
  </body>
</html>

下一步是創建處理程序來接受 /form 請求。 form.html 文件已經通過 FileServer 提供,可以通過 http://localhost:8088/form.html 訪問。

首先,該函數必須調用 ParseForm() 來解析原始查詢并更新 r.PostForm 和 r.Form。這將允許我們通過 r.FormValue 方法訪問 name 和 address 值。

在函數的末尾,我們使用 fmt.Fprintf 將這兩個值寫入 ResponseWriter。

func formHandler(w http.ResponseWriter, r *http.Request) {
    if err := r.ParseForm(); err != nil {
        fmt.Fprintf(w, "ParseForm() err: %v", err)
        return
    }
    fmt.Fprintf(w, "POST request successful")
    name := r.FormValue("name")
    address := r.FormValue("address")

    fmt.Fprintf(w, "Name = %s\n", name)
    fmt.Fprintf(w, "Address = %s\n", address)
}

不要忘記將新的表單處理程序路由添加到 main() 函數。

http.HandleFunc("/form", formHandler)

最后的 server.go 文件如下:

package main

import (
 "fmt"
 "log"
 "net/http"
)

func helloHandler(w http.ResponseWriter, r *http.Request) {
 if r.URL.Path != "/hello" {
  http.Error(w, "404 not found", http.StatusNotFound)
  return
 }

 if r.Method != "GET" {
  http.Error(w, "Method is not supported", http.StatusNotFound)
  return
 }

 fmt.Fprintf(w, "Hello!")
}

func formHandler(w http.ResponseWriter, r *http.Request) {
 if err := r.ParseForm(); err != nil {
  fmt.Fprintf(w, "ParseForm() err: %v", err)
  return
 }
 fmt.Fprintf(w, "POST request successful\n")
 name := r.FormValue("name")
 address := r.FormValue("address")

 fmt.Fprintf(w, "Name = %s\n", name)
 fmt.Fprintf(w, "Address = %s\n", address)
}

func main() {

 // http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
 //  fmt.Fprintf(w, "Hello!")
 // })

 fileServer := http.FileServer(http.Dir("./static"))
 http.Handle("/", fileServer)
 http.HandleFunc("/hello", helloHandler)

 http.HandleFunc("/form", formHandler)

 fmt.Printf("Starting server at port 8088\n")

 if err := http.ListenAndServe(":8088", nil); err != nil {
  log.Fatal(err)
 }
}

表單處理程序測試

我們可以通過使用 go run server.go 啟動服務器來測試表單。當服務器啟動時,訪問 http://localhost:8088/form.html。您應該看到兩個輸入字段和一個提交按鈕。

圖片

填寫完表格后,點擊提交按鈕。服務器應處理您的 POST 請求并在 http://localhost:8088/form 響應頁面上向您顯示結果,例如以下響應:

圖片

如果你看到上面的結果,你已經成功地創建了你的第一個 Golang 網絡和文件服務器。恭喜!如果您想進一步探索 Golang Web 服務器,Golang HTTP 包文檔中有很多很好的例子。

官方文檔:Writing Web Applications

責任編輯:武曉燕 來源: 宇宙之一粟
相關推薦

2014-10-15 11:01:02

Web應用測試應用

2014-04-14 15:54:00

print()Web服務器

2011-05-11 10:58:39

iOS

2019-07-05 08:39:39

GoSQL解析器

2009-01-19 11:07:42

C#Web.NET

2017-06-08 15:53:38

PythonWeb框架

2022-06-07 07:21:19

Python內置庫命令行

2019-05-08 14:37:49

Web服務器HTTP

2022-09-19 08:07:28

Goweb 程序

2021-04-15 08:55:51

Go struc代碼

2021-04-25 08:58:00

Go拍照云盤

2021-11-10 09:10:46

JS 錄屏功能JavaScript

2024-01-02 00:18:56

Buffalo項目Go Web框架

2010-08-13 13:05:30

Flex應用程序

2020-12-08 08:46:07

GoJava工具

2022-04-01 15:18:42

Web 框架網絡通信

2014-11-25 14:04:59

DockerDocker Nodeweb應用部署

2014-05-26 09:13:46

DockerPython

2009-11-28 20:08:20

谷歌ChromeWeb應用

2009-10-19 14:14:19

OSGi Web應用
點贊
收藏

51CTO技術棧公眾號

日韩视频中文字幕| 在线观看视频一区| 国内精品二区| 超碰在线观看91| 在线不卡免费视频| 性感女国产在线| 国产欧美视频一区二区| 成人免费网站在线看| 精品无码久久久久久久久| 免费一区二区| 日韩精品中文字幕一区二区三区| koreanbj精品视频一区| 亚洲成人影院麻豆| 成人99免费视频| 国产日韩av在线| 欧美一级视频免费观看| 婷婷综合伊人| 亚洲日韩中文字幕| 亚洲欧美日韩中文字幕在线观看| 我爱我色成人网| 亚洲一区二区三区视频在线| 日韩欧美第二区在线观看| 国产特黄一级片| 肉丝袜脚交视频一区二区| 欧美极品xxxx| 波多野结衣久久久久| 性欧美lx╳lx╳| 欧美mv日韩mv国产网站app| 亚洲污视频在线观看| 黄色aa久久| 一卡二卡三卡日韩欧美| 亚洲一区二区三区免费观看| 亚洲 欧美 激情 小说 另类| 成人激情黄色小说| 96pao国产成视频永久免费| 亚洲成熟少妇视频在线观看| 亚洲私人影院| 欧美成人午夜剧场免费观看| 中国特黄一级片| 国产欧美日韩视频在线| 日韩电影在线观看中文字幕 | 成人国产免费视频| 91在线免费观看网站| 超碰在线免费97| 久久久久免费| 日本中文字幕久久看| 日韩毛片在线播放| 国模一区二区三区| 欧美黑人国产人伦爽爽爽| 波多野结衣亚洲一区二区| 欧美韩日一区| 日韩最新在线视频| 国产精品视频看看| 国产二区精品| 久久精品中文字幕| 成人免费视频国产免费观看| 国产精品久久久久久麻豆一区软件| 亚洲一区999| 东方伊人免费在线观看| 日韩午夜电影网| xvideos亚洲人网站| 午夜激情福利电影| 中文字幕一区二区三三| 欧美另类第一页| 久久精品视频日本| 亚洲美女黄色| 国产97免费视| 一本色道久久综合精品婷婷| 久久精品二区亚洲w码| 国产美女主播一区| 国产乱码精品一区二区三区精东| 国产精品中文字幕一区二区三区| 亚洲自拍偷拍网址| 天天干,夜夜爽| 久久久综合网站| 亚洲日本精品一区| 免费a在线看| 亚洲午夜久久久久久久久久久| 丝袜人妻一区二区三区| 亚洲欧美综合视频| 都市激情久久综合| 欧美小视频在线| 九九热在线免费| 在线天堂新版最新版在线8| 懂色aⅴ精品一区二区三区蜜月| 欧美黄色免费影院| 国精品产品一区| 日韩欧美一区二区三区在线| 欧美无人区码suv| 欧美oldwomenvideos| 色综合久综合久久综合久鬼88| 日本网站免费观看| 秋霞电影网一区二区| 99九九视频| 国产露出视频在线观看| 亚洲欧美日韩国产一区二区三区 | 欧美揉bbbbb揉bbbbb| 北条麻妃亚洲一区| 香蕉久久精品| 久久伊人免费视频| 日本特黄特色aaa大片免费| 日本欧美大码aⅴ在线播放| 91嫩草国产在线观看| 青青草在线播放| 亚洲女爱视频在线| 日本少妇高潮喷水视频| 大胆国模一区二区三区| 精品亚洲一区二区三区在线观看 | 黄色网址在线视频| 91亚洲一区| 欧美综合在线视频| 91久久久久久久一区二区| 亚洲av片在线观看| 亚洲精品国产成人久久av盗摄| 少妇高潮喷水久久久久久久久久| 国产一区二区三区视频在线| 亚洲欧美一区二区激情| 青青草原免费观看| 青青草精品视频| 麻豆精品视频| av电影院在线看| 3d成人动漫网站| 国产精品成人无码免费| 99精品国产在热久久婷婷| 成人免费在线网址| 国产美女视频一区二区三区| 精品成人国产在线观看男人呻吟| 中文字幕1234区| 成人精品久久| 欧日韩在线观看| 天堂在线资源8| 亚洲国产日韩综合久久精品| 伊人免费视频二| 日韩中文字幕高清在线观看| 国产精品爱啪在线线免费观看| 日日躁夜夜躁白天躁晚上躁91| 最新不卡av在线| 亚洲欧美国产中文| 亚洲黄色网址大全| 66久久国产| 成人免费看吃奶视频网站| 男人天堂亚洲二区| 欧美日韩国产一区二区| 中国特级黄色大片| 亚洲小说欧美另类婷婷| 97超碰资源| 四虎影视成人| 精品国产在天天线2019| 久草成人在线视频| 国产精品一品视频| 无码人妻精品一区二区蜜桃百度| 台湾天天综合人成在线| 日韩在线视频导航| 国产精品无码白浆高潮| 中文字幕中文乱码欧美一区二区| 乌克兰美女av| 久久影院一区| 成人黄色免费片| 亚洲大胆人体大胆做受1| 欧美一区二区三区四区高清| 天堂网avav| 粉嫩蜜臀av国产精品网站| 欧美一级视频在线播放| 国产成人夜色高潮福利影视| 国外成人免费在线播放 | 国产亚洲精品91在线| 波多野结衣家庭主妇| 中文字幕乱码日本亚洲一区二区 | 不卡在线观看av| 精品人妻一区二区三区四区在线| 九一国产精品| 国产美女搞久久| 欧美色图天堂| 精品偷拍各种wc美女嘘嘘| 嫩草影院一区二区三区| 亚洲天堂网中文字| 免费看毛片的网站| 亚洲精品伦理| 成人免费视频播放| 国产在线观看欧美| 免费一区二区| 亚洲影院色在线观看免费| 国产盗摄精品一区二区酒店| 亚洲精品综合精品自拍| 中文字幕+乱码+中文字幕明步 | 亚洲v国产v在线观看| 国产精品久久久久久久久久久久久久久 | 色哟哟网站在线观看| 国产农村妇女毛片精品久久莱园子| 欧美一级二级三级九九九| 色综合.com| 91av在线免费观看视频| 老司机午夜在线| 亚洲精品综合精品自拍| 国产女人高潮时对白| 日韩欧美精品网站| 欧美在线视频第一页| 91麻豆swag| 在线观看免费看片| 日本亚洲最大的色成网站www| 男女爱爱视频网站| 久久不见久久见中文字幕免费| 亚洲最大福利网站| 黄瓜视频成人app免费| 欧美激情综合亚洲一二区| 成人免费黄色网页| 亚洲精品国精品久久99热一| 一级片视频免费| 欧美日韩在线另类| 欧美黄色一区二区三区| 中文字幕乱码日本亚洲一区二区| 国产视频久久久久久| 国产乱子伦视频一区二区三区| 日韩有码免费视频| 最新亚洲激情| 久久精品在线免费视频| 欧美偷拍综合| 久久久一本精品99久久精品| 视频精品一区| 91精品国产综合久久久久久蜜臀| 伊人久久在线| 高清欧美性猛交xxxx| 在线观看中文| 久久韩剧网电视剧| 免费在线黄色影片| 亚洲激情小视频| 免费看黄色一级视频| 欧美精品v国产精品v日韩精品| 精品国产乱子伦| 成人福利片在线| 亚洲欧美另类在线观看| 亚洲精品国产手机| 欧美一级精品大片| 国产又粗又猛又黄又爽| 欧美日韩一区二区电影| 国产精品尤物视频| 欧洲国产伦久久久久久久| 亚洲精品男人的天堂| 欧美性猛交xxxx免费看漫画| 日本少妇xxxx动漫| 香蕉影视欧美成人| 日韩成人在线免费视频| 香蕉乱码成人久久天堂爱免费| 豆国产97在线 | 亚洲| 亚洲一区二区精品久久av| 福利所第一导航| 亚洲综合久久av| 国产主播在线观看| 精品久久久久久亚洲精品| 亚洲视频免费播放| 欧美午夜精品久久久久久浪潮| 日本在线播放视频| 日韩欧美在线视频观看| 国产第一页在线观看| 91福利视频久久久久| 中文在线字幕av| 欧美老年两性高潮| 精品人妻一区二区三区三区四区| 日韩欧美久久一区| 亚洲精品911| 精品丝袜一区二区三区| 高清中文字幕一区二区三区| 中文字幕亚洲情99在线| 美女av在线播放| 欧美精品情趣视频| av资源中文在线| 日本久久中文字幕| 免费成人毛片| 岛国视频一区免费观看| 天堂俺去俺来也www久久婷婷| 欧美一级爽aaaaa大片| 日韩在线中文| 成年人看的毛片| 日韩精品一级二级| 污污视频在线免费| 99re成人精品视频| www.日本高清视频| 亚洲狼人国产精品| 97久久久久久久| 欧美精品高清视频| 人人妻人人澡人人爽人人欧美一区| 日韩极品精品视频免费观看| 伊人免费在线| 欧美极品少妇xxxxx| 激情亚洲影院在线观看| 成人黄在线观看| 欧美日日夜夜| 一区国产精品| 亚洲影视在线| 1314成人网| 久久精品免费在线观看| 亚洲欧美一区二区三区四区五区| 久久精品国产99| 欧洲亚洲妇女av| 欧美成a人片在线观看久| 成人av在线亚洲| 亚洲a级精品| 久久久99精品视频| 日本视频中文字幕一区二区三区| 国产又粗又猛又爽又黄| 国产婷婷一区二区| 国产第一页第二页| 欧美精品第1页| 国产在线观看黄| 久久人人爽人人爽人人片av高请 | 天天干,天天干| 日韩一区二区三区在线| 国产香蕉在线| 国模精品一区二区三区色天香| 免费成人毛片| 欧美日韩一区在线播放| 欧美三级小说| 中文字幕久久av| 久久精品亚洲一区二区三区浴池 | 欧美日本久久| 手机看片福利日韩| 99久久精品99国产精品| 动漫性做爰视频| 欧美性生活大片视频| 天堂在线视频观看| 久久久午夜视频| 久久久久久爱| 一本久久a久久精品vr综合 | 激情亚洲一区二区三区四区 | 国产又爽又黄ai换脸| 久久久久国产精品一区三寸| 亚洲精品乱码久久久久久蜜桃欧美| 中文字幕一区日韩精品欧美| 久久精品久久久久久久| 精品一区二区三区电影| 2020国产在线| 成人精品水蜜桃| 国产一区二区三区四区老人| 中文字幕在线视频一区二区三区| 欧美国产激情二区三区| 亚洲av中文无码乱人伦在线视色| 精品国产亚洲在线| 麻豆av在线免费观看| 亚洲专区国产精品| 欧美激情五月| 一二三区视频在线观看| 一个色在线综合| 丁香花免费高清完整在线播放| 欧美xxxx18性欧美| 亚洲国产欧美国产第一区| 欧美xxxx吸乳| 国产精品99久久久久久宅男| 手机在线免费看毛片| 日韩一区二区三区在线观看| 中文字幕在线播放网址| 欧美国产一区在线| 成人一区二区三区仙踪林| 亚洲男帅同性gay1069| aaa一区二区三区| 欧美激情网站在线观看| 国产suv精品一区| 18禁男女爽爽爽午夜网站免费| 久久香蕉国产线看观看99| 亚洲av无码精品一区二区| 国产亚洲综合久久| 日韩成人精品一区二区三区| 天天干天天操天天干天天操| 国产精品18久久久久久久网站| 久久精品亚洲无码| 亚洲精品小视频| 热久久久久久| 丁香婷婷综合激情| 99久久精品国产导航| 亚洲中文字幕无码爆乳av| 日韩一级黄色av| 99国产精品免费网站| 色欲av无码一区二区人妻| 国产丝袜美腿一区二区三区| 在线观看xxxx| 久久久久亚洲精品国产| 免费看成人哺乳视频网站| 国产视频1区2区3区| 一区二区三区中文字幕| 亚洲欧洲精品视频| 国产精品视频精品视频| 欧美视频导航| 精品国产无码在线观看| 51久久夜色精品国产麻豆| 91豆花视频在线播放| 日韩av电影免费观看| 国产伦精品一区二区三区视频青涩 | 国产999在线| 欧美一区高清| 国产特级黄色录像| 911精品国产一区二区在线| 136福利第一导航国产在线| 神马影院一区二区| 国产成人免费xxxxxxxx| 久久久蜜桃一区二区| 欧美激情视频网| 欧美日韩一区二区综合| 国产精品果冻传媒| 欧美性感一区二区三区| 波多野结衣在线播放| 亚洲欧洲精品一区二区三区波多野1战4 |