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注解