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
//测试接口
POST:localhost:8080/post?name=张三&age=18
在进行传递参数的时候,传递的参数值必须和方法中传递的参数一一对应。
在后端程序中,如何接收传递过来的普通参数数据呢?
- 两种方式
- ①.原始方式
- ②.
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注解