中文在线一区二区_欧美在线综合_久久久久久综合_欧美一区二区三区视频_国产免费看_国产福利精品一区

Action 注解

控制器類 action 注解指的是可以在控制器類中 action 方法中聲明使用的注解標(biāo)簽,包括 ApiParamExtendParam 三個(gè)注解標(biāo)簽。用于實(shí)現(xiàn)對(duì)傳遞到 action 方法的參數(shù)的約束邏輯判斷及注解文檔的生成。

Api

標(biāo)記當(dāng)前的 actionapi

注解字段說(shuō)明

apiName

該字段用于說(shuō)明當(dāng)前 api 在注解文檔中展示的標(biāo)題名稱。

allowMethod

該字段用于限制當(dāng)前 api 允許請(qǐng)求的請(qǐng)求方法,可配置的值可查看枚舉類 \EasySwoole\HttpAnnotation\Enum\HttpMethod ,不配置時(shí)默認(rèn)為 [HttpMethod::GET,HttpMethod::POST]。開(kāi)發(fā)者可能會(huì)對(duì)部分接口限制只能允許 GET 方法請(qǐng)求,這時(shí)就可以配置這個(gè)字段來(lái)限制請(qǐng)求方法。

requestPath

該字段用于說(shuō)明請(qǐng)求當(dāng)前 api,可注冊(cè)到 fast-route,也作為注解文檔中的 api 請(qǐng)求路徑。

注意:如果不把 Api 注解中的 requestPath 注入到 EasySwoole 框架的 Router ,這個(gè)字段僅能作為注解文檔聲明,沒(méi)有其他作用,并不會(huì)使用該字段的值作為路由提供訪問(wèn),客戶端實(shí)際請(qǐng)求時(shí)也是執(zhí)行 EasySwoole 框架的默認(rèn)解析。關(guān)于如何將 requestPath 注入到 EasySwoole 框架的 Router 請(qǐng)看下文說(shuō)明。

requestParam

該字段用于定義當(dāng)前 api action 方法客戶端需要傳遞的參數(shù)及限制約束規(guī)則,該字段接收一個(gè) Param 對(duì)象數(shù)組。實(shí)現(xiàn)對(duì)傳遞的參數(shù)進(jìn)行校驗(yàn)。使用示例如:

<?php

namespace App\HttpController;

use EasySwoole\HttpAnnotation\Attributes\Api;
use EasySwoole\HttpAnnotation\Attributes\Description;
use EasySwoole\HttpAnnotation\Attributes\Param;
use EasySwoole\HttpAnnotation\Enum\HttpMethod;
use EasySwoole\HttpAnnotation\Enum\ParamFrom;
use EasySwoole\HttpAnnotation\Validator\Optional;

class Index extends Base
{
    #[Api(
        apiName: "home",
        allowMethod: HttpMethod::GET,
        requestPath: "/test/index",
        requestParam: [
            new Param(
                name: "account",
                from: ParamFrom::GET,
                validate: [
                    new Optional()
                ],
                value: 1,
                description: new Description("翻頁(yè)參數(shù)")
            )
        ],
    )]
    function index(string $account)
    {
        $this->writeJson(200, null, "account is {$account}");
    }
}

responseParam

該字段主要用于自動(dòng)生成文檔時(shí),響應(yīng)參數(shù)的描述說(shuō)明。

requestExamples

該字段主要用于自動(dòng)生成文檔時(shí),請(qǐng)求參數(shù)示例的描述說(shuō)明。

responseExamples

該字段主要用于自動(dòng)生成文檔時(shí),響應(yīng)參數(shù)示例的描述說(shuō)明。

description

該字段主要用于自動(dòng)生成文檔時(shí),api 的描述說(shuō)明。

Api 注解的 requestPath 注入路由

修改 App\HttpController\Router.php 類文件,在 initialize 方法中添加 \EasySwoole\HttpAnnotation\Utility::mappingRouter($routeCollector, __DIR__); 即可。

<?php

namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\AbstractRouter;
use EasySwoole\HttpAnnotation\Utility;
use FastRoute\RouteCollector;

class Router extends AbstractRouter
{
    function initialize(RouteCollector $routeCollector)
    {
        // 將所有 `Api` 注解的 `requestPath` 注入路由
        Utility::mappingRouter($routeCollector, __DIR__);
    }
}

這樣就可以把所有 Api 注解中的 requestPath 注入到 fast-route,具體用法查看 動(dòng)態(tài)路由 章節(jié)。

使用示例

<?php

namespace App\HttpController;

use EasySwoole\HttpAnnotation\Attributes\Api;
use EasySwoole\HttpAnnotation\Attributes\Description;
use EasySwoole\HttpAnnotation\Attributes\Param;
use EasySwoole\HttpAnnotation\Document\Document;
use EasySwoole\HttpAnnotation\Enum\HttpMethod;
use EasySwoole\HttpAnnotation\Enum\ParamFrom;
use EasySwoole\HttpAnnotation\Validator\Integer;
use EasySwoole\HttpAnnotation\Validator\IsUrl;
use EasySwoole\HttpAnnotation\Validator\MaxLength;
use EasySwoole\HttpAnnotation\Validator\Min;
use EasySwoole\HttpAnnotation\Validator\MinLength;
use EasySwoole\HttpAnnotation\Validator\Optional;
use EasySwoole\HttpAnnotation\Validator\OptionalIfParamMiss;
use EasySwoole\HttpAnnotation\Validator\OptionalIfParamSet;
use EasySwoole\HttpAnnotation\Validator\Required;

class Index extends Base
{
    #[Api(
        apiName: "home",
        allowMethod: HttpMethod::GET,
        requestPath: "/test/index.html",
        requestParam: [
            new Param(
                name: "account",
                from: ParamFrom::GET,
                validate: [
                    new Optional()
                ],
                value: 1,
                description: new Description("翻頁(yè)參數(shù)")
            )
        ],
        description: new Description(__DIR__ . '/../../res/description.md', Description::MARKDOWN_FILE)
    )]
    public function index(string $account)
    {
        $this->writeJson(200, null, "account is {$account}");
    }

    #[Api(
        apiName: "hello",
        allowMethod: [HttpMethod::POST, HttpMethod::GET],
        requestPath: "/test/hello.html",
        requestParam: [
            new Param(name: "account", from: ParamFrom::GET, validate: [
                new Required(),
                new MaxLength(maxLen: 15),
            ], description: new Description("用戶登錄的賬戶Id,這個(gè)參數(shù)一定要有啊"))
        ],
        description: new Description("這是一個(gè)接口說(shuō)明啊啊啊啊")
    )]
    public function hello(string $account)
    {
        $this->writeJson(200, null, "account is {$account}");
    }

    public function doc()
    {
        $path      = __DIR__;
        $namespace = 'App\HttpController';
        $doc       = new Document($path, $namespace);
        $this->response()->write($doc->scanToHtml());
    }

    #[Api(
        apiName: 'url',
        requestParam: [
            new Param(
                name: "url",
                validate: [
                    new IsUrl()
                ]
            )
        ]
    )]
    public function url()
    {

    }

    #[Api(
        apiName: 'optionalSet',
        requestParam: [
            new Param(
                name: "a",
                validate: [
                    new OptionalIfParamSet("b"),
                    new MinLength("5")
                ]
            ),
            new Param(
                name: "b",
                validate: [
                    new OptionalIfParamSet("a"),
                    new Integer(),
                    new Min(1)
                ]
            )
        ]
    )]
    public function optionalSet()
    {

    }

    #[Api(
        apiName: 'optionalMiss',
        requestParam: [
            new Param(
                name: "a",
                validate: [
                    new Optional(),
                    new MinLength("5")
                ],
            ),
            new Param(
                name: "b",
                validate: [
                    new OptionalIfParamMiss("a"),
                    new Integer(),
                    new Min(1)
                ]
            )
        ]
    )]
    public function optionalMiss()
    {

    }
}

Param

Param 注解的字段說(shuō)明已經(jīng)在 控制器類注解 章節(jié)進(jìn)行了說(shuō)明。這里就不再詳細(xì)說(shuō)明。 這里提到 Param 的使用,是其在 action 方法中的使用說(shuō)明。

注意:Param 注解在 action 中使用時(shí),不能既在 Api 注解的 requestParam 字段中使用 Param 注解,又在 action 方法上單獨(dú)聲明 Param 注解,這樣做時(shí)會(huì)導(dǎo)致后者失效。所以推薦要么在 Api 注解的 requestParam 字段中使用 Param 注解,要么在不使用 Api 注解的情況下直接單獨(dú)使用 Param 注解,后者這種就不能把定義的 requestPath 注入路由,而是執(zhí)行 EasySwoole 框架默認(rèn)的路由解析模式。

錯(cuò)誤示例:

<?php
namespace App\HttpController;

use EasySwoole\HttpAnnotation\Attributes\Api;
use EasySwoole\HttpAnnotation\Attributes\Param;
use EasySwoole\HttpAnnotation\Validator\MinLength;
use EasySwoole\HttpAnnotation\Validator\Optional;

class User extends Base
{
    #[Api(
        apiName: 'optionalMiss',
        requestParam: [
            new Param(
                name: "a",
                validate: [
                    new Optional(),
                    new MinLength(5)
                ],
            )
        ]
    )]
    #[Param(
        name: "b",
        validate: [
            new Optional(),
            new MinLength(5)
        ],
    )]
    public function optionalMiss()
    {

    }
}

上述 optionalMiss actionParam 注解的參數(shù) b 會(huì)被忽略,既不會(huì)被驗(yàn)證,也不會(huì)注入?yún)?shù)傳參。

正確示例:

<?php
namespace App\HttpController;

use EasySwoole\HttpAnnotation\Attributes\Api;
use EasySwoole\HttpAnnotation\Attributes\Param;
use EasySwoole\HttpAnnotation\Validator\MinLength;
use EasySwoole\HttpAnnotation\Validator\Optional;

class User extends Base
{
    #[Api(
        apiName: 'optionalMiss',
        requestParam: [
            new Param(
                name: "a",
                validate: [
                    new Optional(),
                    new MinLength(5)
                ],
            ),
            new Param(
                name: "b",
                validate: [
                    new Optional(),
                    new MinLength(5)
                ],
            )
        ]
    )]
    public function optionalMiss()
    {

    }
}

使用示例

<?php

namespace App\HttpController\Api;

use EasySwoole\HttpAnnotation\Attributes\Api;
use EasySwoole\HttpAnnotation\Attributes\ApiGroup;
use EasySwoole\HttpAnnotation\Attributes\Description;
use EasySwoole\HttpAnnotation\Attributes\Example;
use EasySwoole\HttpAnnotation\Attributes\Param;
use EasySwoole\HttpAnnotation\Enum\HttpMethod;
use EasySwoole\HttpAnnotation\Enum\ParamFrom;
use EasySwoole\HttpAnnotation\Enum\ParamType;
use EasySwoole\HttpAnnotation\Validator\MaxLength;
use EasySwoole\HttpAnnotation\Validator\Required;

#[ApiGroup(
    groupName: "Api.Auth", description: new Description(__DIR__ . '/../../../res/description.md', Description::MARKDOWN_FILE)
)]
class Auth extends ApiBase
{
    #[Api(
        apiName: "login",
        allowMethod: HttpMethod::GET,
        requestPath: "/auth/login.html",
        requestParam: [
            new Param(name: "account", from: ParamFrom::GET, validate: [
                new Required(),
                new MaxLength(maxLen: 15),
            ], description: new Description("用戶登錄的賬戶Id")),
            new Param(name: "password", from: ParamFrom::GET, validate: [
                new Required(),
                new MaxLength(maxLen: 15),
            ], description: new Description("密碼")),
            new Param(name: "verify", from: ParamFrom::JSON,
                description: new Description("驗(yàn)證碼"),
                type: ParamType::OBJECT,
                subObject: [
                    new Param(name: "code", from: ParamFrom::JSON, validate: [
                        new Required(),
                        new MaxLength(maxLen: 15),
                    ], description: "防偽編號(hào)"),
                    new Param(name: "phone", from: ParamFrom::JSON, description: "手機(jī)號(hào)")
                ])
        ],
        responseParam: [
            new Param(
                name: "code", type: ParamType::STRING
            ),
            new Param(
                name: "Result",
                type: ParamType::LIST,
                subObject: [
                    new Param("token"),
                    new Param("expire")
                ]
            ),
            new Param("msg")
        ],
        requestExamples: [
            new Example(
                [
                    new Param(name: "account", value: "1111", description: "賬號(hào)"),
                    new Param(name: "password", value: "1111", description: "密碼"),
                    new Param(name: "verify", value: "1111", description: new Description('驗(yàn)證碼')),
                ]
            ),
            new Example(
                new Description(__DIR__ . '/../../../res/json.json', Description::JSON_FILE)
            ),
            new Example(
                new Description(__DIR__ . '/../../../res/xml.xml', Description::XML_FILE)
            ),
        ],
        responseExamples: [
            new Example(
                [
                    new Param(name: "result", description: "結(jié)果", subObject: [
                        new Param(name: "id", value: 1, description: "用戶Id"),
                        new Param(name: "name", value: "八九", description: "昵稱")
                    ]),
                    new Param(name: "code", value: "200", description: "狀態(tài)碼"),
                ]
            ),
            new Example(
                [
                    new Param(name: "result", value: "fail", description: "結(jié)果"),
                    new Param(name: "code", value: "500", description: "狀態(tài)碼"),
                ]
            ),
            new Example(
                new Description(__DIR__ . '/../../../res/json.json', Description::JSON_FILE)
            ),
            new Example(
                new Description(__DIR__ . '/../../../res/xml.xml', Description::XML_FILE)
            ),
        ],
        description: new Description("這是一個(gè)接口說(shuō)明")
    )]
    public function login()
    {

    }
}

ExtendParam

用于子類控制器類在重寫(xiě)父類控制類的 action 方法時(shí)限制約束傳入子類控制器類的 action 方法參數(shù)。且 ExtendParam 注解只能在 action 中使用一次。

使用示例

Base 類,父類有一個(gè) add action,限制必填參數(shù) param1param2

<?php
namespace App\HttpController;

use EasySwoole\HttpAnnotation\AnnotationController;
use EasySwoole\HttpAnnotation\Attributes\Param;
use EasySwoole\HttpAnnotation\Exception\Annotation;
use EasySwoole\HttpAnnotation\Exception\ValidateFail;
use EasySwoole\HttpAnnotation\Validator\Required;

class Base extends AnnotationController
{
    #[Param(
        name: "param3",
        validate: [
            new Required()
        ]
    )]
    #[Param(
        name: "param4",
        validate: [
            new Required()
        ]
    )]
    public function add()
    {

    }

    protected function onException(\Throwable $throwable): void
    {
        if ($throwable instanceof ValidateFail) {
            $this->writeJson(400, null, $throwable->getMessage());
        } else {
            if ($throwable instanceof Annotation) {
                $this->writeJson(400, null, $throwable->getMessage());
            } else {
                throw $throwable;
            }
        }
    }
}

Index 類,子類控制器,重寫(xiě)父類 Baseadd action,聲明 ExtendParam 注解指定要約束的參數(shù),所以 add action 由于受到父類參數(shù)約束,所以必填參數(shù) param1param2

<?php
namespace App\HttpController;

use EasySwoole\HttpAnnotation\Attributes\ExtendParam;

class Index extends Base
{
    #[ExtendParam(parentParams: ['param1', 'param2'])]
    public function add()
    {

    }
}
主站蜘蛛池模板: 九色av | 亚洲国产一区二区三区四区 | 国产精品久久久久久久久 | 欧美一区二区三区在线观看 | 草草视频网站 | 中文字幕第9页 | 国产精品成人一区二区三区 | 午夜影院在线 | 伊人网站| 97精品国产一区二区三区 | 91久久精品国产 | 精品国产乱码一区二区三区 | av片免费看 | 国产精品久久久久久久久久久新郎 | 免费成人在线观看视频 | 亚洲网站在线观看 | 一区二区三区av | 日韩成人一区二区 | 日韩国产在线观看 | 欧美视频在线观看不卡 | 久久国| 色偷偷噜噜噜亚洲男人的天堂 | 日韩免费 | 在线免费观看中文字幕 | 精品久久一区二区三区 | 午夜影院在线观看 | 最新精品国产 | 久久久久久一区 | 日韩中文字幕免费视频 | 九九国产| 久久久av| 国内精品视频在线观看 | 中文av一区| 亚洲一区二区三区蜜桃 | 亚洲成人自拍 | 久久国产一区二区 | 青青操av | 日韩有码在线播放 | 欧美日韩精品一区二区三区 | 久久国内精品 | 久久久久一区 | 免费观看在线午夜影视 | 一区亚洲| 国产精品尤物在线观看 | 日本久久久久久 | 高清久久| 色xx综合网| 综合久久久 | 3344视频| 一区二区三区视频在线观看 | 国产精品午夜电影 | 最新国产在线视频 | 欧美国产精品一区二区三区 | 可以免费在线观看av的网站 | 国产成人久久精品麻豆二区 | 国产视频一区在线 | 国产精品久久久久久久久久ktv | 夜夜超碰| 在线免费观看h片 | 香蕉大人久久国产成人av | 欧美成人午夜 | 婷婷综合| 国产欧美日韩 | 成年无码av片在线 | 亚洲成人免费在线 | 国产精品无码久久久久 | 日韩色在线 | 青草青草久热精品视频在线观看 | 久久这里有精品视频 | 午夜成人免费电影 | 中外毛片 | 一区二区av | 亚洲欧美网站 | 亚洲精品一区二区在线 | 国产目拍亚洲精品99久久精品 | 亚洲欧美精品一区二区三区 | 久久久久久九九九 | 99精品一区二区三区 | 日韩亚洲 | 爱爱免费看 | 国产精品久久久久久久久久东京 | 精品国产影院 | 亚洲成人av在线 | 日日摸夜夜添夜夜添精品视频 | 欧美精品久久久 | 欧美激情视频一区二区三区在线播放 | 欧美午夜影院 | 中文字幕在线视频观看 | 99精品网站| 久久香蕉网 | 亚洲精品在线免费看 | 可以看的毛片网站 | 欧美大片黄 | 电影91久久久| 免费观看的黄色 | 欧美日韩视频 | 国产日韩精品在线 | 中文字幕 亚洲一区 | 日韩在线中文字幕 | 木耳av在线 | av久久 | 成人欧美一区二区三区在线播放 | 五月婷婷激情网 | 午夜精品久久 | 亚洲第1页| 三区视频| 国产精彩视频 | 在线免费色视频 | 亚洲精美视频 | 亚洲欧美国产精品专区久久 | 欧美日韩中文 | 精品免费在线 | 欧美一区二区三区在线观看视频 | 亚洲男人av| 精品综合久久久 | 不卡视频在线 | 亚洲不卡视频 | 国产精品毛片久久久久久 | 欧美精品一二三 | 成人av在线网| 五月天婷婷精品 | 欧美日韩精品免费观看 | 亚洲三级在线观看 | 国产精品欧美大片 | 欧美一级在线观看 | 成人免费视频网站在线看 | 国产精品成人av | 99久久99久久久精品色圆 | 一级在线观看视频 | 亚洲福利在线观看 | av在线精品| 欧美日韩一区二区三区 | 久久中文字幕一区二区三区 | 免费的av网站 | 欧美一区三区 | 干片网 | 欧美日韩第一页 | 欧美日韩国产高清 | 午夜小视频在线观看 | 精品久久亚洲 | 一区二区中文 | 夫妻午夜影院 | 欧美视频在线观看免费 | 偷拍呻吟高潮91 | 亚洲乱码国产乱码精品精的特点 | 亚洲免费观看视频 | 久久精品91 | 国产亚洲欧美一区 | 一区二区国产在线观看 | 99精品免费 | 国产2区 | 中文字幕啪啪 | 自拍视频网站 | 韩日一区 | 久久久久久国产精品高清 | 精品三级在线观看 | 国内毛片毛片 | 日韩在线国产精品 | 亚洲在线一区 | 99热在线播放 | 91精品国产91久久久久久吃药 | 成人看片在线 | 日韩字幕在线 | 国产日韩视频在线观看 | 亚洲国产中文字幕 | 成人黄色电影小说 | 中文字幕乱码一区二区三区 | 国产福利91精品一区二区 | 精品欧美一区二区三区久久久 | 国产一区亚洲二区三区 | 亚洲精品一二三 | 亚洲综合久久久 | 国产黄色电影 | 一级电影在线观看 | 黄色小视频免费 | 欧洲免费视频 | 中文字幕亚洲欧美日韩在线不卡 | 日韩精品一级毛片 | 国产在线中文字幕 | 在线 亚洲 欧美 | 黄色小视频免费 | 日日操日日操 | 黄色网页免费看 | 夫妻午夜影院 | 亚洲国产精品久久久久婷婷老年 | 黄色片免费在线观看 | 99免费精品视频 | 国产精品一码二码三码在线 | 亚洲激情网站 | 亚洲精品白浆高清久久久久久 | 精品成人在线视频 | 黄在线 | 欧美国产在线观看 | 91在线高清观看 | 日韩成人影院 | 亚洲欧美日韩国产综合精品二区 | 91在线看| 精品视频久久 | 国产999精品久久久久久 | 黄视频在线免费看 | 欧美亚洲一 | 欧美精品 | 国产精品一二三区视频出来一 | 2023国产精品久久久精品双 | 久久久久久极品 | 欧美一区二区免费 | 美女在线一区 | 国产一级黄色大片 | 日本精品视频一区二区 | 日韩中文一区二区三区 | 中文字幕国产日韩 | 欧美成人精品一区二区男人看 | 91精品国产高清一区二区三区 | 噜噜噜噜狠狠狠7777视频 | 成人二区 | 欧美国产日韩一区 | 久久久久久这里只有精品 | 夜夜爽99久久国产综合精品女不卡 | 91精品国产一区二区三区香蕉 | 国产欧美视频一区二区 | 国产视频在线播放 | 午夜在线 | av电影免费在线观看 | 欧美成人二区 | 91在线第一页 | 北条麻妃一区二区三区在线观看 | 欧美激情综合网 | 91久久精品国产91久久性色tv | 一区二区日韩欧美 | 国产免费网址 | 99精品视频一区二区三区 | 欧美一级二级三级视频 | 国产在线观看高清 | 精品视频一区二区三区 | 成人瑟瑟 | 欧美视频一二三区 | 精品国产一区二区三区日日嗨 | 国产一区二区三区精品久久久 | av中文字幕在线观看 | 中文字幕在线一区 | 亚洲欧美一区在线 | 日本一区二区三区中文字幕 | 欧美日韩第一页 | 国产精品18久久久久vr手机版特色 | 性色av一区二区三区 | 一区二区三区高清 | 91中文字幕在线 | 久久国内精品 | av亚洲在线 | 欧美美女黄色网 | 天堂资源在线 | 国产一区二区三区四区在线观看 | 成人免费大片黄在线播放 | 日韩一区二区三区在线视频 | 久久99精品久久久久 | 欧美在线99 | 成人精品综合 | 中文字幕91| 成人国产精品156免费观看 | 久久色视频 | 午夜a级理论片915影院 | 日本在线播放 | 日本成人 | 亚洲国产成人91精品 | 久久精品99久久 | 久久福利电影 | 超碰日韩 | 国产一级在线 | 中文字幕在线观看av | 中文字幕精品一区久久久久 | 亚洲成人av电影 | 欧美亚洲免费 | 日韩a| 国产精品久久久久久久 | 一级免费网站 | 色吊丝在线永久观看最新版本 | а天堂中文最新一区二区三区 | 天天操一操 | 99热激情 | 91精品国产色综合久久不卡蜜臀 | 可以在线观看的av网站 | av毛片 | 曰批免费视频播放免费 | 欧美三级视频 | 成人在线一区二区 | 91日韩精品一区二区三区 | a∨色狠狠一区二区三区 | 中文字幕综合在线 | 成人在线视频免费观看 | 亚洲成av在线 | 国产一区二区三区欧美 | 日韩一区二区三区在线视频 | 凹凸国产成人精品视频免费 | 久久精品成人免费视频 | 国产视频二 | 久久久麻豆 | 成人性大片免费观看网站 | 国产一级在线 | 97久久超碰| 久久99精品视频 | 三级av在线| 亚洲免费影院 | 性色综合| 国变精品美女久久久久av爽 | 欧美一区二区三区精品免费 | 国产一级免费 | 91仓库| 一级毛片免费 | 蜜桃一区 | 一级毛片国产 | 国产精品精 | 成人综合网站 | 毛片一区| 四虎最新网址 | 超级av| 精品少妇一区二区三区在线播放 | 久久国产电影 | 久久国产亚洲精品 | 久久精品成人一区二区三区蜜臀 | 91亚洲精品乱码久久久久久蜜桃 | 亚洲一区二区精品视频 | 日韩欧美国产一区二区三区 | 在线视频一区二区三区 | 亚洲狠狠爱一区二区三区 | 欧美日韩久久 | 卡通动漫第一页 | 久草国产视频 | 中文亚洲字幕 | 日本中文字幕在线电影 | 日韩在线视频一区 | 日本一区二区不卡在线观看 | 久久久久高清 | 久久精品欧美 | 欧美国产综合 | 黄色在线观看网站 | 日韩在线精品视频 | 国产精品区二区三区日本 | 国产久精品 | 欧美在线| 中文字幕一区二区三区在线视频 | 黄在线免费观看 | 久久综合九色综合欧美狠狠 | 色综合久久久久久久久久久 | 亚洲视频一区在线 | 国产乱码精品一区二区三区中文 | 成人精品一区二区 | 一区二区三区在线 | 国产精品原创巨作av | 欧美日韩精品免费观看 | 一级毛片视频 | 国产精品一区二区无线 | 久久久免费 | 欧美日韩中文在线观看 | 成人午夜精品一区二区三区 | 在线中文视频 | 91久久艹| 可以免费在线观看av的网站 | 激情一级片 | 日韩视频免费在线观看 | 999精品视频 | 久久久精品电影 | 久久久精品国产一区 | 亚洲夜幕久久日韩精品一区 | 欧美成人二区 | 久久免费99精品久久久久久 | 亚洲欧美日韩精品久久奇米色影视 | av网站在线免费观看 | 国产精品久久久久久久久久 | 久久久麻豆 | 精品96久久久久久中文字幕无 | 欧美3区| 日韩小视频网站 | 亚洲日本在线观看视频 | www久草| 日韩国产一区二区 | 中文字幕乱码亚洲无线三区 | 日韩av一区二区在线观看 | 日韩在线| 欧美一区二区三区黄 | 精品久久99 | 亚洲一区二区三区四区五区午夜 | 久久伊人精品 | 日韩第一区 | 亚洲电影天堂在线观看 | 欧美黑人一级爽快片淫片高清 | 婷婷国产成人精品视频 | 永久黄网站色视频免费 | 国产一区 | 野花国产精品入口 | www.av欧美| 成人日韩 | www.久| 国产精品久久久久久久久久久久冷 | 久久久亚洲精品视频 | 亚洲欧美v国产一区二区 | 精品国产乱码久久久久久1区2区 | 91精品国产乱码久久久久久久久 | 免费在线观看一区二区 | 日韩在线播放视频 | 欧美成人免费在线 | 国产乱码精品一区二区三区av | 青青五月天 | 国产欧美日韩在线 | 欧美一区二区三区在线视频 | 欧美精品一二三区 | 丁香久久 | 久久久www成人免费无遮挡大片 | 国内自拍视频在线观看 | 久久精品噜噜噜成人av农村 | 日韩精品中文字幕在线观看 | 日韩成人在线播放 | 亚洲国产精品久久久 | 免费在线一区二区 | 黄色片免费看 | 亚洲五码在线 | 亚洲国产精品成人女人久久久 | 伊人激情网 | 精品久久久久久 | 欧美激情视频一区二区三区在线播放 | 日韩av高清在线 | 亚洲在线视频播放 | 精品美女 | 成人精品 | 欧美日韩成人一区二区 | 久久久精品免费观看 | 91久久精品视频 | 午夜电影网 | 一区二区三区亚洲 | 91在线免费视频 | 国产一区二区欧美 | 欧美专区在线观看 | 在线日韩成人 | 国产美女在线播放 | 色天天综合 | 亚洲免费在线 | 爱操av | 国产精品毛片久久久久久久 | 欧美成人精品一区二区三区在线看 | 精品国产乱码久久久久久影片 | 亚洲国产高清高潮精品美女 | 国产一区二区久久 | 男女小网站 | 精品一区二区三区免费毛片 | 国产精品久久久久免费a∨ 欧美黄色精品 | 精品国产乱码久久久久夜 | 久久国产精品一区二区 | 亚洲精品专区 | 精品免费国产一区二区三区 | 国产精品三级视频 | 日本黄色片免费看 | 免费一级毛片 | 性色视频在线 | 久久综合九色综合欧美狠狠 | 久久精彩 | 在线观看欧美一区 | 国产一区二区在线免费观看 | 中文字幕在线电影 | 久久久久午夜 | 亚洲毛片在线 | 中文字幕一区在线 | 国产欧美日韩综合精品 | 午夜社区 | 一区二区三区 在线 | 欧美一区二区三区视频 | 日韩欧美国产一区二区三区 | 亚洲一区二区在线免费观看 | 国产aaaaav久久久一区二区 | 欧美成人不卡 | 日本激情综合网 | 午夜夜 | 好吊妞国产欧美日韩免费观看视频 | 亚洲国产精品一区二区久久 | 另类国产ts人妖高潮系列视频 | 国产精品3区 | 中文字幕视频免费 | 亚洲h视频 | 夜夜骑av | 国产片在线观看 | 国产视频一二三区 | 欧美综合一区 | 中文字幕在线资源 | 亚洲综合区 | 日韩精品一区二区在线观看 | 999精品视频一区二区三区 | 久久99视频 | 伊人激情综合网 | 精品国产欧美一区二区三区成人 | 久久久久国产 | 日韩精品在线观 | 午夜av影院| 簧片av| 国产高清视频在线 | 日本高清视频网站www | 精品无码久久久久久国产 | 亚洲视频一区二区 | 91在线综合 | 日本精品视频一区二区 | 久久最新| 丰满白嫩老熟女毛片 | 免费三片在线观看网站 | 亚洲精品电影在线观看 | 国产精品视频免费 | 亚洲成人一区二区三区四区 | 国户精品久久久久久久久久久不卡 | 三级网站在线播放 | 国产乱码久久久久久一区二区 | 国产成人一区二区三区 | 亚洲日本乱码在线观看 | 欧美国产激情二区三区 | 精品在线一区二区 | www.色.com| av在线电影网 | 福利久久 | 最近2019中文字幕大全视频10 | 69久久| 国产免费av在线 | 日韩欧美一区视频 | 国产精品18久久久久久久久久久久 | 亚洲国内精品 | 亚洲一区国产 | 黄色a一级 | 日韩视频在线免费观看 | 久久久久国产精品 | 日韩欧美在线视频 | 欧美成人第一页 | 中文精品在线 | 久久久久久91 | 精品无码久久久久国产 | 免费黄色小视频 | 国产精品自产拍在线观看桃花 | 久久亚洲国产精品日日av夜夜 | 亚洲香蕉在线观看 | 人人草天天草 | 国产高清在线 | 精品日韩一区二区三区 | 午夜激情视频在线观看 | 精品亚洲免费 | 国产综合视频在线观看 | 日韩中文字幕在线视频 | 国产成人精品一区二区三区四区 | 日韩精品第一页 | 欧美视频精品 | 亚洲国产精品久久久久秋霞不卡 | 久久精品中文 | 中文字幕日韩欧美一区二区三区 | 亚洲一区二区三区四区的 | 国产精品视频在线播放 | 日韩欧美在线观看一区二区 | 国产日韩精品一区二区 | 精品中文字幕一区二区 | av中文字幕在线 | 精品香蕉一区二区三区 | 依人成人网 | 天天操一操 | 一区二区三区久久 | 欧美一区二区激情视频 | 蜜桃视频一区二区三区 | 午夜激情视频在线观看 | 91久久国产综合久久91精品网站 | 久久中文字幕一区二区 | 亚洲精品国产a | 色先锋影院| 国产精品久久久久久中文字 | 亚洲综合第一页 | 精品日韩| 亚洲黄色成人 | 国产区视频 | 黄色美女网站 | 亚洲精品a在线观看 | 亚洲综合射 | 亚洲一区二区三区在线视频 | 谁有毛片网站 | 欧美日韩在线精品 | 亚洲精品成人 | 亚洲天堂一区 | 亚洲网站在线 | 国产精品国产a级 | 国产精品尤物在线观看 | 日韩激情免费视频 | 精品国产乱码久久久久久88av | 午夜欧美 | 香蕉成人啪国产精品视频综合网 | 乱人伦xxxx国语对白 | 99亚洲伊人久久精品影院红桃 | 国产免费av在线 | 国产成人久久 | 91精品国产综合久久久久久 | 日韩和的一区二在线 | 久久久免费视频观看 | 一级黄色免费网站 | 都市激情国产 | 国产精品久久久久久久久免费桃花 | av一区二区在线观看 | 久久99久久久久久 | 免费一级视频在线观看 | 国产精品久久久久久婷婷天堂 | 91精品久久久久久久久 | 欧美日韩中文字幕 | 中文字幕av亚洲精品一部二部 | 久久九九99 | 中文在线资源 | 久草福利在线视频 | 91麻豆精品国产91久久久更新资源速度超快 | 国产成人99久久亚洲综合精品 | 欧美视频在线免费 | 爱色av网| 久久国产精品久久久久久 | 日比视频网站 | av片免费看 | 在线观看中文字幕亚洲 | 欧美日韩精品网站 | 久久久久91 | 在线免费日韩 | 一级二级在线观看 | 中文字幕精品一区二区精品绿巨人 |