首页 > 基础资料 博客日记

后端Web核心之请求响应

2024-08-18 18:00:14基础资料围观153

这篇文章介绍了后端Web核心之请求响应,分享给大家做个参考,收藏Java资料网收获更多编程知识

目录

1.概述

2.接收请求

简单参数和实体参数

数组集合参数

日期参数和JSON参数

路径参数

总结

3.返回响应


1.概述

Web请求和响应是HTTP协议中的核心概念,它们是客户端(通常是浏览器)与服务器之间通信的基础。

浏览器发起请求后,由Controller处理再发送响应数据给浏览器。而我们自己写的controller程序,由于不支持tomcat中的java规范,因此tomcat其实是不能识别的,也就不能运行。

但是Tomcat支持servlet,springboot底层提供了一个非常核心的servlet,就是dispatcherServlet,它实现了servlet接口,那么前端发起的请求都会先经过它,再由它把这个请求转发给各个controller程序,controller处理后的结果再返回给dispatcherServlet,再发送给浏览器。它非常重要,因此叫做前端(核心)控制器

tomcat解析完浏览器的http请求,会封装在HttpServletRequest对象中,而发送的请求会封装在HttpServletResponse对象中。

这种架构模式就叫做BS(browser/server)架构:客户端只需要浏览器,应用程序的逻辑操作和数据都存储在服务端。通过浏览器访问的网站都是BS架构,比如京东、淘宝等

另外一种模式叫做CS(client/server)架构:就是需要安装的客户端,比如QQ、微信等

以上是Web应用程序整体的访问流程,大部分都不需要我们去管,因此要重点关注需要我们自己编写的Controller程序,其中最重要的就是获取请求参数设置响应数据

2.接收请求

简单参数和实体参数

由于通过localhost我们只能发送get请求,如果要发送post或其他形式的请求就需要去编写前端程序,这样是比较繁琐的,因此我们用postman(Apipost、Apifox差不多用法)工具去测试后端的功能接口,它可以指定请求形式、传递参数、请求头和请求体等。

简单参数:对于简单参数,无论是什么请求形式,只需要保证请求的参数名和controller方法中的形参名保持一致就都可以接收成功。

即使不一致,也可以通过注解@RequestParam将参数名name映射到username上,从而完成参数的接收。

实体参数:简单参数在少的情况下比较方便,但如果要传递十几二十个参数呢,此时就会变得很麻烦,因此考虑把这些参数都封装到一个实体类中,传递这个实体类即可。

以上是简单实体参数的封装,对于对象中含有多个属性(复杂实体参数)的,通过address.privince这样的方式一个一个进行封装。

数组集合参数

请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

另一种方式是使用集合参数:用注解RequestParam绑定参数关系

日期参数和JSON参数

日期参数:用注解DateTimeFormat注解完成日期参数格式转换(指定日期的格式)

JSON参数:JSON数据是放在请求体中携带到服务端的,因此要用post请求。JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody标识

路径参数

通过请求URL直接传递参数,使用{...}来标识该路径参数,需要使用@PathVariable获取路径参数,其中id是动态的,以便于访问不同的路径。

对于多个路径参数,就多写一个参数就可以了。

总结

3.返回响应

实际上,return的这部分(hello world)就是响应数据。这依赖于一个核心注解ResponseBody,它被包含在RestController中

这些Controller中的public对外暴露的方法被称为功能接口,RequestMapping后面就是它的请求路径(/hello)。而实际项目开发需要的开发文档就是描述这些接口的请求路径、请求参数和响应数据。

但是,这些接口的返回的数据多种多样,前端不可能一个一个的对这些数据进行解析。因此我们用一个通用的实体对象(result)来接收,最后所有的Controller方法都给前端返回这个result。这样前端只需要对这种格式的数据进行解析就可以。


文章来源:https://blog.csdn.net/chencxiaobai/article/details/141200768
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云