当前位置: 首页 > news >正文

[netty5: HttpObject]-源码解析

HttpObject

HttpObject 是所有 HTTP 消息对象的父接口,继承 DecoderResultProvider,表示它们都能提供解码结果。

public interface HttpObject extends DecoderResultProvider {}

DecoderResultProvider

DecoderResultProvider是定义了获取和设置解码结果(DecoderResult)的方法的接口。

public interface DecoderResultProvider {DecoderResult decoderResult();void setDecoderResult(DecoderResult result);
}

DecoderResult

DecoderResult 是一个标准的解码状态表示类,封装了是否成功和失败原因。

public class DecoderResult {private static final DecoderResult SUCCESS = new DecoderResult();public static DecoderResult failure(Throwable cause) {requireNonNull(cause, "cause");return new DecoderResult(cause);}public static DecoderResult success() {return SUCCESS;}private final Throwable cause;protected DecoderResult(Throwable cause) {this.cause = requireNonNull(cause, "cause");}protected DecoderResult() {this.cause = null;}public final boolean isSuccess() {return cause == null;}public final boolean isFailure() {return cause != null;}public final Throwable cause() {return cause;}@Overridepublic String toString() {if (isSuccess()) {return "success";}String cause = cause().toString();return new StringBuilder(cause.length() + 17).append("failure(").append(cause).append(')').toString();}
}

HttpContent

HttpContent 表示HTTP消息的内容体(body),它能给你拿到数据(payload()),还能复制一份内容(copy())

public interface HttpContent<R extends HttpContent<R>> extends HttpObject, Resource<R> {Buffer payload();R copy();
}

LastHttpContent

LastHttpContent 是HttpContent的子接口,表示消息体的最后一块数据,还能拿到额外的尾部头信息(trailingHeaders()),比如分块传输时用。

public interface LastHttpContent<R extends LastHttpContent<R>> extends HttpContent<R> {HttpHeaders trailingHeaders();
}

HttpMessage

代表一条HTTP消息的基础抽象,有协议版本(protocolVersion())和消息头(headers()),能设置协议版本。

public interface HttpMessage extends HttpObject {HttpVersion protocolVersion();HttpMessage setProtocolVersion(HttpVersion version);HttpHeaders headers();
}

HttpRequest

HttpRequest 是HttpMessage的请求版本,带请求方法(GET/POST等)和请求地址URI。

public interface HttpRequest extends HttpMessage {HttpMethod method();HttpRequest setMethod(HttpMethod method);String uri();HttpRequest setUri(String uri);@OverrideHttpRequest setProtocolVersion(HttpVersion version);
}

HttpResponse

HttpResponse 是HttpMessage的响应版本,带响应状态码(200 OK,404等)。

public interface HttpResponse extends HttpMessage {HttpResponseStatus status();HttpResponse setStatus(HttpResponseStatus status);@OverrideHttpResponse setProtocolVersion(HttpVersion version);
}

FullHttpMessage

继承了HttpMessage和LastHttpContent,表示既有完整头信息又有完整内容体的HTTP消息。

public interface FullHttpMessage<R extends FullHttpMessage<R>> extends HttpMessage, LastHttpContent<R> {}

FullHttpRequest

FullHttpRequest 是带完整头和体的 HTTP 请求对象

public interface FullHttpRequest extends HttpRequest, FullHttpMessage<FullHttpRequest> {@OverrideFullHttpRequest setProtocolVersion(HttpVersion version);@OverrideFullHttpRequest setMethod(HttpMethod method);@OverrideFullHttpRequest setUri(String uri);
}

FullHttpResponse

FullHttpResponse 是带完整头和体的 HTTP 响应对象。

public interface FullHttpResponse extends HttpResponse, FullHttpMessage<FullHttpResponse> {@OverrideFullHttpResponse setProtocolVersion(HttpVersion version);@OverrideFullHttpResponse setStatus(HttpResponseStatus status);
}
http://www.dtcms.com/a/266630.html

相关文章:

  • OpenShift AI - 使用 NVIDIA Triton Runtime 运行模型
  • ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
  • 跨境电商ERP怎么选?有没有适合新手起步免费版的ERP系统?
  • Zabbix Web检测报错“Could not resolve host: blog.cn; Unknown error”
  • ABP VNext + RediSearch:微服务级全文检索
  • Java项目:基于SSM框架实现的在线投稿管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • 供应链管理:指标评估方式分类与详解
  • JVM 简介与作用
  • Unity HDRP + Azure IoT 的 Python 后端实现与集成方案
  • git教程-pycharm使用tag打标签
  • 云渲染时,电脑能关机吗?关键阶段操作指南
  • Android课程前言
  • Vue-19-前端框架Vue之应用基础组件通信(二)
  • Linux基本命令篇 —— uname命令
  • HarmonyOS学习记录3
  • 【技术架构解析】国产化双复旦微FPGA+飞腾D2000核心板架构
  • 「源力觉醒 创作者计划」_文心 4.5 开源模型玩出花——教育场景下 Scratch 积木自动化生成的部署实践与优化
  • 【算法刷题记录001】整型数组合并(java代码实现)
  • 转Go学习笔记
  • RT‑DETRv2 详解:Real‑Time DETR 的 Bag‑of‑Freebies 与部署优化
  • PNG图像压缩优化工具
  • 钉钉小程序开发技巧:getSystemInfo 系统信息获取全解析
  • IRIV算法详解 | 变量选择的迭代保留法
  • 全星稽核管理软件系统——企业智能化稽核管理的最佳解决方案
  • zxing去白边
  • 督皇口粮酱酒 平价不平质
  • 第十五节:第三部分:特殊文件:XML概述、解析
  • C语言中的输入输出函数:构建程序交互的基石
  • Linux的压缩与解压缩
  • WPF 右键菜单 MenuItem 绑定图片时只显示最后一个 Icon