httpcore系列(一)初识httpcore

序言

学习一个知识点,我会按照以下3点逐一去了解。
1:是什么
2:怎么用
3:解决了什么问题 & 实现原理

(一)httpcore是什么?

httpcore是什么?官方的介绍是这样的:

HttpCore is a set of low level HTTP transport components that can be used to build custom client and server side HTTP services with a minimal footprint. HttpCore supports two I/O models: blocking I/O model based on the classic Java I/O and non-blocking, event driven I/O model based on Java NIO.

简单翻译:HttpCore是一组低级别的HTTP传输组件,可以用最小的占用空间构建自定义的HTTP客户端和服务端。 HttpCore支持两种I /O模型:基于经典Java的 I/O阻塞模型和基于Java NIO的非阻塞事件驱动的I/O模型。

(二)httpcore常见接口、类介绍

聊到http,我们肯定少不了对【请求】和【响应】这两个术语的描述,在httpcore的定义里,究竟是怎么描述它们的呢?,请求定义接口HttpRequest、响应定义接口HttpResponse都继承自接口HttpMessage,HttpMessage究竟定了什么?

1: 【interface】HttpMessage
HttpMessage主要定义了请求头操作相关的一系列方法。
在这里插入图片描述

HttpMessage的类关系
在这里插入图片描述

  • HTTP messages consist of requests from client to server and responses from server to client.

【翻译】HTTP的消息是由客户端到服务端的请求和服务端到客户端的响应组成,也就是说把http的请求与响应都抽象或统称为http的消息。

  • HTTP messages use the generic message format of RFC 822 for transferring entities (the payload of the message). Both types of message consist of a start-line, zero or more header fields(also known as “headers”), an empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields, and possibly a message-body.

【翻译】http的消息使用RFC 822定义的通用消息格式定义消息实体。
每一种消息类型都有一个起始行,零个或多个请求头,一个表示请求头描述结束的空行,可能存在的消息体组成。

  • HttpMessage的格式

generic-message =
start-line
*(message-header CRLF)
CRLF
[ message-body ]

start-line的定义

start-line = Request-Line | Status-Line
【Request-Line】 请求行,由Method + Request-URI + HTTP-Version
CRLF构成,httpcore里接口类为RequestLine,实现类为BasicRequestLine;
---------------
【Status-Line】 响应行,由HTTP-Version + Status-Code + Reason-Phrase CRLF构成,httpcore里接口类为StatusLine,实现类为BasicStatusLine。
HTTP-message = Request | Response ; HTTP/1.1 messages

2: 【interface】HttpRequest
HttpRequest是httpcore的定义里对请求的最高抽象,也就是说所有的请求类都是其实现。

HttpRequest的类图如下,通过这张类图你会发现,BasicHttpEntityEnclosingRequest是HttpRequest里描述请求最底层的类。
在这里插入图片描述

  • BasicHttpEntityEnclosingRequest的介绍
    在这里插入图片描述
    通过观察构造函数,当我们使用它声明一个请求对象时,我们需要指定请求的方法、请求的uri、或请求的http协议版本
public BasicHttpEntityEnclosingRequest(final String method, final String uri) 

public BasicHttpEntityEnclosingRequest(final String method, final String uri,
            final ProtocolVersion ver) 

public BasicHttpEntityEnclosingRequest(final RequestLine requestline) 

2: 【interface】HttpResponse
HttpResponse是httpcore的定义里对响应的最高抽象,也就是说所有的响应类都是其实现。

HttpResponse的类图如下
在这里插入图片描述通过这张类图你会发现,BasicHttpResponse是HttpResponse里描述响应最底层的类,而其中主要定义了设置响应行、响应体相关的方法。

总结

通过上述学习,我们大致知道用BasicRequestLine描述请求行、BasicStatusLine描述响应行、BasicHttpEntityEnclosingRequest描述一个从客户端到服务端的底层请求对象、BasicHttpResponse描述一个从服务端到客户端的响应对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值