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

Spring Boot 記錄Controller接口請(qǐng)求日志七種方式,第六種性能極高

開(kāi)發(fā) 前端
API接口記錄請(qǐng)求相關(guān)日志是確保系統(tǒng)安全性、可維護(hù)性以及性能監(jiān)控的重要措施之一。通過(guò)記錄API請(qǐng)求的詳細(xì)信息,包括請(qǐng)求時(shí)間、來(lái)源IP地址、請(qǐng)求方法(GET、POST等)、請(qǐng)求參數(shù)、響應(yīng)狀態(tài)碼及響應(yīng)時(shí)間等,開(kāi)發(fā)者能夠有效追蹤錯(cuò)誤源頭、分析用戶(hù)行為模式、優(yōu)化系統(tǒng)性能,并保障數(shù)據(jù)安全。

環(huán)境:SpringBoot3.2.5

1. 簡(jiǎn)介

API接口記錄請(qǐng)求相關(guān)日志是確保系統(tǒng)安全性、可維護(hù)性以及性能監(jiān)控的重要措施之一。通過(guò)記錄API請(qǐng)求的詳細(xì)信息,包括請(qǐng)求時(shí)間、來(lái)源IP地址、請(qǐng)求方法(GET、POST等)、請(qǐng)求參數(shù)、響應(yīng)狀態(tài)碼及響應(yīng)時(shí)間等,開(kāi)發(fā)者能夠有效追蹤錯(cuò)誤源頭、分析用戶(hù)行為模式、優(yōu)化系統(tǒng)性能,并保障數(shù)據(jù)安全。

接下來(lái),我將介紹七種API接口請(qǐng)求日志的記錄方式:

圖片圖片

準(zhǔn)備接口

@RestController
@RequestMapping("/api")
public class ApiController {


  private final static Logger logger = LoggerFactory.getLogger(ApiController.class) ;
  
  @GetMapping("/query/{category}")
  public ResponseEntity<Object> query(@PathVariable String category, @RequestParam String keyword) {
    logger.info("查詢(xún)數(shù)據(jù), 分類(lèi): {}, 關(guān)鍵詞: {}", category, keyword) ;
    return ResponseEntity.ok("success") ;
  }
}

接下來(lái)的示例我們都將通過(guò)該接口進(jìn)行測(cè)試。

2. 實(shí)戰(zhàn)案例

2.1 Filter過(guò)濾

通過(guò)Filter方式可以攔截并記錄HTTP請(qǐng)求和響應(yīng)的組件。通過(guò)Filter技術(shù),開(kāi)發(fā)人員可以在請(qǐng)求到達(dá)目標(biāo)資源之前或響應(yīng)返回客戶(hù)端之前進(jìn)行日志記錄,從而實(shí)現(xiàn)訪(fǎng)問(wèn)控制和請(qǐng)求預(yù)處理等功能。

如果你考慮使用Filter,那么非常幸運(yùn)你不需要自己去實(shí)現(xiàn),Spring MVC給我們提供了此功能的實(shí)現(xiàn),如下類(lèi)圖:

圖片圖片

這里我們可以直接注冊(cè)CommonRequestLoggingFilter過(guò)濾器。

@Bean
FilterRegistrationBean<Filter> loggingFilter() {
  FilterRegistrationBean<Filter> reg = new FilterRegistrationBean<>() ;
  CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter() ;
  // 是否記錄客戶(hù)端信息
  filter.setIncludeClientInfo(true) ;
  // 記錄請(qǐng)求header數(shù)據(jù)
  filter.setIncludeHeaders(true) ;
  // 記錄請(qǐng)求body內(nèi)容
  filter.setIncludePayload(true) ;
  // 是否記錄查詢(xún)字符串
  filter.setIncludeQueryString(true) ;
  reg.setFilter(filter) ;
  reg.addUrlPatterns("/api/*") ;
  return reg ;
}

這還不夠,還需要配合下面日志級(jí)別配置:

logging:
  level:
    '[org.springframework.web.filter]': debug

接下來(lái),訪(fǎng)問(wèn)/api/query/book?keyword=java接口

圖片圖片

成功記錄了請(qǐng)求的相關(guān)數(shù)據(jù)。

2.2 HandlerInterceptor記錄日志

HandlerInterceptor用于攔截請(qǐng)求處理也是非常的實(shí)用。它允許開(kāi)發(fā)者在請(qǐng)求到達(dá)控制器之前、之后或發(fā)生異常時(shí)執(zhí)行特定邏輯,從而實(shí)現(xiàn)對(duì)請(qǐng)求處理的全面監(jiān)控和日志記錄。

定義攔截器

@Component
public class LoggingRequestInterceptor implements HandlerInterceptor {


  private static final Logger logger = LoggerFactory.getLogger(LoggingRequestInterceptor.class);


  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
    long startTime = Instant.now().toEpochMilli();
    String time = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()) ;
    logger.info("Request URL::" + request.getRequestURL().toString() + ":: StartTime=" + time);
    request.setAttribute("startTime", startTime);
    return true;
  }
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
    long startTime = (Long) request.getAttribute("startTime");
    logger.info("Request URL::" + request.getRequestURL().toString() + ":: TimeTaken="
        + (Instant.now().toEpochMilli() - startTime));
  }
}

注冊(cè)攔截器

@Component
public class InterceptorConfig implements WebMvcConfigurer {
  
  private final LoggingRequestInterceptor loggingRequestInterceptor ;
  public InterceptorConfig(LoggingRequestInterceptor loggingRequestInterceptor) {
    this.loggingRequestInterceptor = loggingRequestInterceptor;
  }
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(loggingRequestInterceptor).addPathPatterns("/api/**") ;
  }
}

請(qǐng)求API接口

圖片

2.3 使用AOP技術(shù)

通過(guò)AOP記錄日志是一種強(qiáng)大的技術(shù),它允許開(kāi)發(fā)者在不修改業(yè)務(wù)邏輯代碼的情況下,將日志記錄等橫切關(guān)注點(diǎn)與業(yè)務(wù)邏輯分離。AOP能夠自動(dòng)攔截方法調(diào)用,并記錄方法執(zhí)行前后的信息,為系統(tǒng)提供全面的日志支持。

自定義注解

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Log {


  /**模塊*/
  String module() default "" ;
  /**具體操作說(shuō)明*/
  String desc() default "" ;
}

定義切面

@Component
@Aspect
public class LogAspect {


  @Pointcut("@annotation(log)")
  private void recordLog(Log log) {}
  
  @Around("recordLog(log)")
  public Object logAround(ProceedingJoinPoint pjp, Log log) throws Throwable {
    String module = log.module();
    String desc = log.desc();
    long uid = System.nanoTime() ;
    String threadName = Thread.currentThread().getName();
    System.err.printf("%s - 【%d】 模塊: %s, 操作: %s, 請(qǐng)求參數(shù): %s%n", threadName, uid, module, desc, Arrays.toString(pjp.getArgs())) ;
    Object ret = pjp.proceed() ;
    System.err.printf("%s - 【%d】 返回值: %s%n", threadName, uid, ret) ;
    return ret ;
  }
}

修改Controller接口

@Log(module = "綜合查詢(xún)", desc = "查詢(xún)商品信息")
@GetMapping("/query/{category}")
public ResponseEntity<Object> query(@PathVariable String category, @RequestParam String keyword)

請(qǐng)求API接口

圖片圖片

2.4 基于Servlet請(qǐng)求事件機(jī)制

默認(rèn)情況下,當(dāng)一個(gè)請(qǐng)求到達(dá)后,Spring MVC底層會(huì)發(fā)布一個(gè)事件ServletRequestHandledEvent,我們只需要監(jiān)聽(tīng)該事件也是可以獲取到詳細(xì)的請(qǐng)求/響應(yīng)信息。

自定義事件監(jiān)聽(tīng)器

@Component
public class RequestEventListener implements ApplicationListener<ServletRequestHandledEvent> {


  private static final Logger logger = LoggerFactory.getLogger(RequestEventListener.class) ;
  @Override
  public void onApplicationEvent(ServletRequestHandledEvent event) {
    logger.info("請(qǐng)求信息: {}", event) ;
  } 
}

請(qǐng)求API接口

圖片圖片

你可以通過(guò)ServletRequestHandledEvent事件對(duì)象獲取具體的明細(xì)信息

圖片圖片

2.5 使用第三方Logbook組件

Logbook是一個(gè)可擴(kuò)展的Java庫(kù),能夠?yàn)椴煌目蛻?hù)端和服務(wù)器端技術(shù)實(shí)現(xiàn)完整的請(qǐng)求和響應(yīng)日志記錄。它允許開(kāi)發(fā)者記錄應(yīng)用程序接收或發(fā)送的任何HTTP流量。

引入依賴(lài)

<dependency>
  <groupId>org.zalando</groupId>
  <artifactId>logbook-spring-boot-starter</artifactId>
  <version>3.10.0</version>
</dependency>

配置文件

logging:
  level:
    '[org.zalando.logbook.Logbook]': TRACE

請(qǐng)求API接口

圖片圖片

2.6 自定義HandlerMethod

如果你僅僅是針對(duì)Controller接口進(jìn)行日志記錄處理,那么強(qiáng)烈推薦此種方式。

2.7 三方API接口調(diào)用

通常我們會(huì)使用RestTemplate/RestClient進(jìn)行第三方接口的調(diào)用;如果要記錄此種情況的日志信息,那么我們需要自定義ClientHttpRequestInterceptor攔截器。

public class LoggingClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {


  private final Logger log = LoggerFactory.getLogger(this.getClass());
  @Override
  public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
      throws IOException {
    logRequest(request, body) ;
    ClientHttpResponse response = execution.execute(request, body);
    logResponse(response);
    return response;
  }
  private void logRequest(HttpRequest request, byte[] body) throws IOException {
    if (log.isDebugEnabled()) {
      log.debug("===========================request begin================================================");
      log.debug("URI         : {}", request.getURI());
      log.debug("Method      : {}", request.getMethod());
      log.debug("Headers     : {}", request.getHeaders());
      log.debug("Request body: {}", new String(body, "UTF-8"));
      log.debug("==========================request end================================================");
    }
  }
  private void logResponse(ClientHttpResponse response) throws IOException {
    if (log.isDebugEnabled()) {
      log.debug("============================response begin==========================================");
      log.debug("Status code  : {}", response.getStatusCode());
      log.debug("Status text  : {}", response.getStatusText());
      log.debug("Headers      : {}", response.getHeaders());
      log.debug("Response body: {}", StreamUtils.copyToString(response.getBody(), Charset.defaultCharset()));
      log.debug("=======================response end=================================================");
    }
  }
}

RestTemplate配置攔截器

@Bean
RestTemplate restTemplate(RestTemplateBuilder builder) {
  RestTemplate restTemplate = builder
    .additionalInterceptors(
      new LoggingClientHttpRequestInterceptor())
  .build() ;
  return restTemplate ;
}

日志打印情況如下:

圖片圖片

如果使用的RestClient,那么可以同一個(gè)攔截器,配置如下:

@Bean
RestClient restClient() {
  return RestClient
      .builder()
      .requestInterceptor(
        new LoggingClientHttpRequestInterceptor())
      .build() ;
}
責(zé)任編輯:武曉燕 來(lái)源: Spring全家桶實(shí)戰(zhàn)案例源碼
相關(guān)推薦

2024-05-30 08:51:28

Spring數(shù)據(jù)分布式

2024-08-30 11:11:01

2017-06-26 10:35:58

前端JavaScript繼承方式

2025-01-21 08:00:00

限流微服務(wù)算法

2009-02-11 09:46:00

ASON網(wǎng)絡(luò)演進(jìn)

2024-10-12 08:18:21

Spring接口組件

2025-10-29 01:45:00

toString()SpringJackson

2023-03-08 16:54:28

MySQL數(shù)據(jù)庫(kù)

2025-06-17 07:37:53

2017-06-14 16:44:15

JavaScript原型模式對(duì)象

2019-05-16 13:00:18

異步編程JavaScript回調(diào)函數(shù)

2024-12-18 16:19:51

2018-06-10 16:31:12

2025-02-27 00:00:30

SpringJava方式

2022-12-06 10:39:43

Spring事務(wù)失效

2024-01-04 12:48:00

Spring

2025-01-08 09:35:55

Spring性能監(jiān)控

2022-03-18 14:33:22

限流算法微服務(wù)

2022-07-01 08:00:44

異步編程FutureTask

2020-07-31 11:12:39

安全威脅網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全
點(diǎn)贊
收藏

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

中国a一片一级一片| 亚洲av无码一区二区三区人| av毛片在线免费看| 成人性视频免费网站| 国产91精品视频在线观看| 成年人免费观看视频网站| 欧美视频免费看| 五月激情综合色| 一区二区三区电影| 深夜福利视频网站| 看片的网站亚洲| 91av网站在线播放| 中文字幕电影av| 香蕉久久精品| 在线成人高清不卡| www.玖玖玖| 超碰个人在线| 国产亚洲精品资源在线26u| 亚洲综合精品一区二区| 无码日韩精品一区二区| 在线国产日韩| 久久久精品视频在线观看| 国产激情第一页| 91精品国产色综合久久不卡粉嫩| 欧美色播在线播放| 久久www视频| 天堂аⅴ在线地址8| 久久综合九色综合97婷婷| 91高跟黑色丝袜呻吟在线观看| 欧美一区二区三区网站| 国产一区清纯| 久久精品国产一区二区电影| 精品人伦一区二区三电影| 亚洲精品高潮| 欧美一三区三区四区免费在线看| 黄色国产小视频| av高清不卡| 精品高清一区二区三区| 欧美无砖专区免费| 羞羞视频在线观看不卡| 国产精品久久久久影院老司| 日本视频一区二区在线观看| 四虎精品在线| av在线不卡网| 国产一区喷水| 亚洲va欧美va| 国产福利一区二区三区视频| 国产在线久久久| 一区二区三区精彩视频| 免费观看久久久4p| 国产精品 欧美在线| 黑人精品无码一区二区三区AV| 伊人成人在线| 国内精品久久久久久久| 日韩女同强女同hd| 亚洲久久在线| 7m精品福利视频导航| 日本少妇裸体做爰| 影院欧美亚洲| 66m—66摸成人免费视频| 男人的天堂一区| 国产精品日韩| 国产精品wwww| 一级黄色片在线播放| 九九国产精品视频| 99中文字幕| 天堂av2024| 26uuu国产电影一区二区| 欧美精品二区三区四区免费看视频 | 日韩中文av在线| 日本在线观看网址| 亚洲精品一区二区妖精| 米奇精品一区二区三区在线观看| 福利所第一导航| 精品白丝av| 秋霞av国产精品一区| 波多野结衣爱爱| 久久aⅴ国产欧美74aaa| 91在线视频成人| 免费看黄色一级视频| 91蝌蚪porny九色| 色综合影院在线观看| 顶级网黄在线播放| 香蕉成人啪国产精品视频综合网| 91好吊色国产欧美日韩在线| 日韩免费小视频| 欧美一区二区三区男人的天堂| 最新中文字幕日本| 美女毛片一区二区三区四区最新中文字幕亚洲| 亚洲欧美在线一区二区| 成人做爰视频网站| 亚洲精品1234| 国产精品专区第二| 天天色综合av| 国产精品白丝在线| 国产精品va在线观看无码| 美女日韩欧美| 日韩精品一区二区三区视频| 爱爱免费小视频| 综合久久婷婷| 欧美性视频精品| 国产女主播福利| 国产亚洲人成网站| 日韩精品一区二区三区四| 色香欲www7777综合网| 日韩欧美高清dvd碟片| 熟女少妇内射日韩亚洲| 国产精品v亚洲精品v日韩精品| 国产精品第1页| 刘亦菲久久免费一区二区| 国产精品天天摸av网| 精品少妇在线视频| 小说区图片区亚洲| 亚洲色图美腿丝袜| 日本在线视频免费观看| 狠狠色2019综合网| 午夜精品一区二区在线观看| 1区2区3区在线| 91精品久久久久久久99蜜桃 | 中文字幕第38页| 欧美亚洲tv| 欧美黑人视频一区| 国产精品久久久久久久免费看| 91网站在线观看视频| 天堂av在线中文| 欧美美女福利视频| 亚洲新声在线观看| 亚洲欧美偷拍一区| 99精品欧美一区二区三区小说| 欧美少妇一级片| 免费日韩成人| 伊人久久综合97精品| 自拍偷拍欧美亚洲| 成人午夜伦理影院| 日本免费a视频| 亚洲一区网址| 欧美激情精品久久久久| 国产福利资源在线| 亚洲欧美色综合| 日日干日日操日日射| 国产精品久久久久9999赢消| 国产精品久久久久久久天堂| 欧美人体大胆444www| 欧美日韩亚洲视频一区| 日本一区二区在线免费观看| 欧美精品入口| 成人区精品一区二区| 在线中文字幕视频观看| 日韩欧美综合在线| 久久99久久98精品免观看软件| 国产麻豆91精品| 亚洲天堂av免费在线观看| 国产不卡精品在线| 九九热最新视频//这里只有精品 | 日本精品网站| 在线电影欧美日韩一区二区私密| 日韩欧美国产另类| 国产精品蜜臀av| 国产又粗又长又爽又黄的视频| 国产韩国精品一区二区三区| 91久久久久久久久久久久久| 超碰在线观看免费| 亚洲第一区在线观看| 日本网站免费观看| 久久久国产精品午夜一区ai换脸| 黄色高清无遮挡| 欧美激情国产在线| 91黄色精品| 中文在线аv在线| 一区二区三区高清国产| 91久久久久国产一区二区| 亚洲另类色综合网站| 97人妻精品一区二区三区免费| 亚洲视频二区| 先锋影音一区二区三区| 精品视频在线观看免费观看| 欧美极品第一页| 青青青草原在线| 7878成人国产在线观看| 激情四射综合网| 91麻豆国产香蕉久久精品| 杨幂毛片午夜性生毛片| 在线成人直播| 久久久久久九九| 亚洲老司机网| …久久精品99久久香蕉国产| 91sp网站在线观看入口| 日韩午夜电影av| 青青草视频在线观看免费| 亚洲日本护士毛茸茸| 日韩 中文字幕| 国模少妇一区二区三区| 色综合久久久久无码专区| 四虎国产精品免费观看| 国产视频一区二区不卡| 欧美成人家庭影院| 7m精品福利视频导航| 麻豆传媒在线免费看| 亚洲精品美女在线观看播放| 亚洲熟妇无码久久精品| 性做久久久久久久久| 国产中文字幕久久| 91一区一区三区| 国产福利精品一区二区三区| 99成人精品| www.亚洲一区二区| 欧美美女在线| av一区二区三区免费| 亚洲精品国产嫩草在线观看| 欧美激情亚洲激情| 日本中文字幕视频在线| 精品一区二区三区电影| 国产成人三级在线播放| 欧美三级视频在线观看| 四虎成人永久免费视频| 亚洲自拍偷拍网站| 一区二区三区影视| 欧美极品另类videosde| 一女三黑人理论片在线 | 日韩av无码一区二区三区不卡| 美国欧美日韩国产在线播放| 北条麻妃69av| 在线欧美三区| 国产精品久久国产| 在线成人直播| 日本丰满大乳奶| 国产精品伦理久久久久久| 清纯唯美一区二区三区| 欧美性生活一级片| 久久99精品国产99久久| 风间由美中文字幕在线看视频国产欧美 | 天堂资源在线中文精品| 全黄性性激高免费视频| 欧美日韩一视频区二区| 糖心vlog在线免费观看| 91欧美日韩| 在线电影看在线一区二区三区| 欧美最新另类人妖| 亚洲成人a**址| 欧美午夜精彩| 亚洲一区不卡在线| 欧美电影免费播放| 在线视频一区观看| 99精品电影| 26uuu成人| 女生裸体视频一区二区三区| www.亚洲一区二区| 欧美日韩国产欧| 岛国大片在线播放| 国产欧美一区二区三区国产幕精品| 久青草视频在线播放| 精品福利电影| 欧美爱爱视频免费看| 久久中文欧美| 国产高清视频网站| 国产一区久久久| 亚洲熟女一区二区三区| 成人丝袜高跟foot| 成人网站免费观看| 国产午夜久久久久| 韩国一级黄色录像| 亚洲精品久久7777| 永久看片925tv| 亚洲综合免费观看高清完整版在线 | 美女又爽又黄免费| 91麻豆国产香蕉久久精品| 成人在线手机视频| 亚洲欧美激情插| 国产无套在线观看| 色哟哟一区二区在线观看| 中文字幕黄色av| 日韩午夜激情av| 色综合888| 日韩视频免费中文字幕| 男男gaygays亚洲| 欧洲s码亚洲m码精品一区| 欧美videos粗暴| 国产精品手机在线| 少妇精品久久久| 欧美性受xxxx黑人猛交88| 今天的高清视频免费播放成人| 免费高清在线观看免费| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产女同无遮挡互慰高潮91| 风间由美性色一区二区三区| 超碰97人人干| 亚洲桃色在线一区| 99热国产在线观看| 欧美二区乱c少妇| 香蕉久久国产av一区二区| 少妇激情综合网| а√在线中文在线新版| 国产日韩精品在线播放| 精品少妇3p| 正义之心1992免费观看全集完整版| 韩日欧美一区| 国内外成人免费在线视频| 本田岬高潮一区二区三区| 91成人精品一区二区| 午夜国产精品影院在线观看| 91美女精品网站| 亚洲人成77777在线观看网| 羞羞视频在线观看免费| 国产精品人成电影| 久久91在线| ijzzijzzij亚洲大全| 米奇777在线欧美播放| 四虎永久免费观看| 中文字幕一区二区在线观看| 天天操天天干视频| 日韩一级免费观看| 91精品专区| 欧美一级成年大片在线观看 | 精品日韩欧美一区二区| 69久久精品| 国产97在线视频| 日韩精品免费一区二区三区竹菊| 欧洲美女和动交zoz0z| 日韩中文字幕1| 影音先锋黄色资源| 亚洲一区二区欧美日韩| 国产精品久久无码一三区| 国产亚洲一区二区精品| 色多多在线观看| 国产在线精品一区二区三区| 欧美先锋影音| 久久发布国产伦子伦精品| |精品福利一区二区三区| 销魂美女一区二区| 亚洲欧美综合另类中字| 三级中文字幕在线观看| 久草热久草热线频97精品| 亚洲视频中文| 精品人妻在线视频| 一区二区高清免费观看影视大全 | 91丨porny丨国产入口| 久艹视频在线观看| 日韩美女一区二区三区四区| 久热国产在线| 亚洲精品欧美日韩| 91成人国产| 四虎国产精品免费| 一区二区欧美精品| 亚洲国产精品18久久久久久| 九九热这里只有在线精品视| 日韩一区二区三区精品视频第3页| 国产精品夜夜夜爽张柏芝| 国产一区二区三区国产| 国产这里有精品| 日韩欧美成人午夜| 国产第一页在线| 国严精品久久久久久亚洲影视 | 天天操天天干天天爱| 91国产视频在线| 一区二区三区日本久久久| 哪个网站能看毛片| 国产农村妇女精品| 亚洲影视一区二区| 欧美成人免费一级人片100| 在线视频亚洲欧美中文| 人人妻人人添人人爽欧美一区| av在线播放成人| 久久久成人免费视频| 在线播放日韩专区| 日本在线一区二区三区| av无码久久久久久不卡网站| 99久久综合国产精品| 国产精品久久久久久久久夜色| 日韩在线一区二区三区免费视频| 精品国产麻豆| 免费无遮挡无码永久视频| 欧美极品少妇xxxxⅹ高跟鞋 | 亚洲人成伊人成综合网久久久| 欧美大片免费观看网址| 亚洲一区二区三区免费看| 国产福利91精品一区| 久久久久久久久久久久久久av| 亚洲欧洲日本专区| 亚洲精品一区av| 97超碰青青草| 日韩一区中文字幕| 日韩一区免费视频| 国产精品视频网站| 尹人成人综合网| 网站永久看片免费| 亚洲国产成人av在线| 国产精品久久久久久久久久齐齐 | 精品粉嫩超白一线天av| 欧美影视资讯| 日本一区午夜艳熟免费| 国产嫩草影院久久久久| 亚洲免费成人网| 国产精品视频免费在线观看| 伊人久久大香线蕉综合热线| 中文字幕伦理片| 亚洲第一天堂无码专区| 久久青草免费| 777久久久精品一区二区三区| 17c精品麻豆一区二区免费| 国产又爽又黄网站亚洲视频123|