您的位置:首页 > 游戏 > 手游 > SpringBoot 请求响应

SpringBoot 请求响应

2024/10/7 0:25:21 来源:https://blog.csdn.net/m0_67671144/article/details/139497306  浏览:    关键词:SpringBoot 请求响应

SpringBoot 请求响应

来源于黑马程序员JavaWeb课程,总结笔记

1.ApiFox

Apifox快速入门教程

2.基本参数

简单参数:在向服务器发起请求时,向服务器传递的是一些普通的请求数据。

//RequestController.java
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 功能:* 作者:兮和*/
//原始方式@RestController
public class RequestController {/** Http get请求* @param httpUrl 连接* @return 响应数据*/@RequestMapping("/doget")public String doGet(HttpServletRequest request) {// 获取请求参数String name = request.getParameter("name");String age = request.getParameter("age");System.out.println(name + ":" + age);return "数据响应成功";}}
//测试接口get:localhost:8080/get?name=张三&age=18

GET请求简单参数

//测试接口
POST:localhost:8080/post?name=张三&age=18

控制台打印的数据

POST请求简单参数

在进行传递参数的时候,传递的参数值必须和方法中传递的参数一一对应。

在后端程序中,如何接收传递过来的普通参数数据呢?

  • 两种方式
    • ①.原始方式
    • ②.SpringBoot方式
2.1 原始方式

在原始的Web程序当中,需要通过Servlet中提供的API:HttpServletRequest(请求对象),获取请求的相关信息。比如获取请求参数:

Tomcat接收到http请求时:把请求的相关信息封装到HttpServletRequest对象中

在Controller中,我们要想获取Request对象,可以直接在方法的形参中声明 HttpServletRequest 对象。然后就可以通过该对象来获取请求信息:

//根据指定的参数名获取请求参数的数据值
String  request.getParameter("参数名")
@RestController
public class RequestController {// http://localhost:8080/simpleParam?name=Tom&age=10// 第1个请求参数: name=Tom   参数名:name,参数值:Tom// 第2个请求参数: age=10     参数名:age , 参数值:10//springboot方式@RequestMapping("/simpleParam")public String simpleParam(String name , Integer age ){//形参名和请求参数名保持一致System.out.println(name+"  :  "+age);return "OK";}
}

@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。如果该参数是可选的,可以将required属性设置为false

**结论:**不论是GET请求还是POST请求,对于简单参数来讲,只要保证请求参数名和Controller方法中的形参名保持一致,就可以获取到请求参数中的数据值。

参数名称不一致,controller还能拿到请求参数值吗?

2.2 Java中发送HTTP请求

上述是原生的开发方式


package HTTP;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;/*** 功能:* 作者:兮和* 时间: 1:42*/
public class HttpRequestExample {public static void main(String[] args) {try {// 创建URL对象URL url = new URL("https://www.example.com");// 打开连接HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 设置请求方法connection.setRequestMethod("GET");// 获取响应代码int responseCode = connection.getResponseCode();System.out.println("Response Code: " + responseCode);// 读取响应内容BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));String inputLine;StringBuilder response = new StringBuilder();while ((inputLine = reader.readLine()) != null) {response.append(inputLine);}reader.close();// 打印响应内容System.out.println("Response Content:\n" + response.toString());} catch (IOException e) {e.printStackTrace();}}
}

程序执行结果

浏览器响应结果

https://developer.aliyun.com/article/1135538

非常优质的一篇关于SpringBoot项目集成Java发送Http请求(HttpClient)的博文。

3.关于请求响应

浏览器发送请求,会携带请求数据,包括:请求行、请求头;请求到达tomcat之后,tomcat会负责解析这些请求数据,然后将解析后的请求数据会传递给Servlet程序的HttpServletRequest对象,那也就意味着 HttpServletRequest 对象就可以获取到请求数据。 而Tomcat,还给Servlet程序传递了一个参数 HttpServletResponse,通过这个对象,我们就可以给浏览器设置响应数据 。

这种浏览器/服务器的架构模式呢,我们称之为:BS架构。

• BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。

3.1 响应

@ResponseBody

controller方法中的return的结果,怎么就可以响应给浏览器呢?

答案:使用@ResponseBody注解

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com