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;
}
@Override
public 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);
@Override
HttpRequest setProtocolVersion(HttpVersion version);
}
HttpResponse
HttpResponse 是HttpMessage的响应版本,带响应状态码(200 OK,404等)。
public interface HttpResponse extends HttpMessage {
HttpResponseStatus status();
HttpResponse setStatus(HttpResponseStatus status);
@Override
HttpResponse 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> {
@Override
FullHttpRequest setProtocolVersion(HttpVersion version);
@Override
FullHttpRequest setMethod(HttpMethod method);
@Override
FullHttpRequest setUri(String uri);
}
FullHttpResponse
FullHttpResponse 是带完整头和体的 HTTP 响应对象。
public interface FullHttpResponse extends HttpResponse, FullHttpMessage<FullHttpResponse> {
@Override
FullHttpResponse setProtocolVersion(HttpVersion version);
@Override
FullHttpResponse setStatus(HttpResponseStatus status);
}