HTTP请求基础:理解HTTP协议与Json报文的应用

需积分: 10 1 下载量 92 浏览量 更新于2024-08-17 收藏 1.29MB PPT 举报
HTTP请求实体是网络通信中至关重要的一环,尤其是在Web开发和数据交互过程中。本文将深入讲解HTTP协议的基础概念、工作原理以及一个实际操作的例子,帮助理解如何在客户端和服务器之间进行数据交换。 首先,HTTP(HyperText Transfer Protocol)是一种应用层的传输协议,用于在客户端(如浏览器)和服务器之间传输和呈现超文本内容。它基于TCP/IP协议,以请求-响应模式运作,使得用户能够访问互联网上的各种信息和服务。HTTP协议的工作过程包括: 1. 客户端与服务器建立连接:客户端,通常是浏览器,通过TCP/IP协议找到指定域名的服务器,通常默认端口为80。例如,当我们输入网址http://www.oakcms.cn时,浏览器会发起一个连接请求。 2. 发送HTTP请求:客户端构建一个包含请求行(请求方法、URL和HTTP版本)、请求头部(可能包含认证信息、内容类型等)的文本报文,通过TCP套接字发送给服务器。 3. 服务器处理请求:服务器解析请求,查找并处理请求的数据,如读取HTML文件或执行其他操作。然后,服务器构建一个响应,包括状态行(如200 OK表示成功)、响应头部(如Content-Type指定响应内容类型)和响应数据。 4. 连接管理:如果连接模式为“keep-alive”,则连接不会立即断开,允许后续请求共享此连接;否则,服务器主动关闭连接。客户端浏览器随后解析状态行和响应头部,获取响应长度和字符集,再读取响应数据并解析HTML。 5. 显示内容:浏览器根据接收到的HTML内容,按照语法进行渲染,并在用户的浏览器窗口中显示出来。 通过一个实例来说明这个过程:当你在浏览器地址栏输入URL并回车后,一系列步骤依次发生:首先,DNS服务器解析URL中的域名,获取服务器的IP地址;接着,客户端使用该IP地址和默认端口建立TCP连接;然后,浏览器发送HTTP GET请求以读取特定页面,经过三次握手完成连接建立;服务器接收到请求后,生成响应并返回,浏览器解析响应,展示页面内容。 总结来说,HTTP请求实体是Web通信的核心组件,了解其工作原理对于开发者在构建Web应用时高效地进行数据交互至关重要。掌握这些基础知识有助于更好地理解和解决网络请求相关的问题,提升开发效率。

帮我分析以下代码中为什么this.approvalRecordService .queryCreate方法取不到后端查询出的数据并讲解解决步骤 @Query(value = "select approvalRecord from ApprovalRecord approvalRecord where approvalRecord.createdBy.login = ?#{principal.username} order by id desc", countQuery = "select count(approvalRecord) from ApprovalRecord approvalRecord") Page<ApprovalRecord> findByCreatedByIsCurrentUser(Pageable pageable); @GetMapping("/approval-records/my-created") public Page<ApprovalRecord> getAllCreatedApprovalRecords( @org.springdoc.api.annotations.ParameterObject Pageable pageable) { log.debug("REST request to get all getAllCreatedApprovalRecords"); return approvalRecordRepository.findByCreatedByIsCurrentUser(pageable); } queryCreated(req?: any): Observable<EntityArrayResponseType> { const options = createRequestOption(req); return this.http .get<IApprovalRecord[]>(`${this.resourceUrl}/my-created`, { params: options, observe: 'response' }) .pipe(map((res: EntityArrayResponseType) => this.convertDateArrayFromServer(res))); } loadPage(page?: number, dontNavigate?: boolean): void { this.isLoading = true; const pageToLoad: number = page ?? this.page ?? 1; this.approvalRecordService .queryCreated({ page: pageToLoad - 1, size: this.recordsPerPage, // sort: this.sort() }) .subscribe({ next: (res: HttpResponse<IApprovalRecord[]>) =>{ this.isLoading = false; this.onSuccess(res.body, res.headers, pageToLoad, !dontNavigate); }, error: () => { this.isLoading = false; this.onError(); } }) }

2023-05-25 上传