目录
一、创建项目
二、项目结构
三、起步依赖
四、简单请求接口
控制类
1、无参数
2、简单参数
3、实体参数
4、数组集合参数
5、json参数
五、统一响应结果
result.java
HelloResponse.java
测试结果
一、创建项目
Spring官方骨架,可以理解为Spring官方为程序员提供一个搭建项目的模板。
二、项目结构
三、起步依赖
在SpringBoot的项目中,有很多的起步依赖,他们有一个共同的特征:就是以spring-boot-starter-
作为开头。形如spring-boot-starter-xxx这类的依赖,都为起步依赖。
常见的起步依赖:
-
spring-boot-starter-web:包含了web应用开发所需要的常见依赖
-
spring-boot-starter-test:包含了单元测试所需要的常见依赖
四、简单请求接口
控制类
@RestController
public class HelloController {
}
@RestController
是一个注解(annotation),在Java Spring框架中使用。它的作用是将一个类标记为一个RESTful风格的控制器(Controller)。在Spring中,控制器用于处理HTTP请求并返回HTTP响应,通常用于构建Web应用程序的后端。
@RestController
注解结合了 @Controller
和 @ResponseBody
注解的功能。让我们简要了解一下这两个注解:
-
@Controller
: 用于将一个类标记为Spring MVC中的控制器,它处理客户端的HTTP请求并将处理结果返回给客户端。通常,它使用视图解析器将模型数据渲染成视图(HTML页面)并返回给客户端。但对于RESTful风格的控制器,不需要渲染视图,而是直接将数据以JSON或XML格式返回给客户端。 -
@ResponseBody
: 通常结合在@Controller
标记的方法上,用于指示该方法返回的是HTTP响应的主体部分(ResponseBody),而不是渲染成视图。返回的数据会直接发送给客户端,而不会经过视图解析器。
当一个类被标记为 @RestController
时,其中的方法默认行为是将返回的Java对象直接转换为JSON格式,并将其作为HTTP响应的主体部分返回给客户端。这非常方便,特别是在构建RESTful API时,因为你无需显式地处理对象转换为JSON的过程,Spring会自动处理这一点。
1、无参数
// 无参数
@RequestMapping("/hello")
public String hello(){
return "你好";
}
2、简单参数
// 简单参数
@RequestMapping("/simpleParam")
public String simpleParam(String name, int age){
System.out.println(name + " : " + age);
return "请求成功";
}
// 参数名不一致
@RequestMapping("/simpleParam2")
public String simpleParam2(@RequestParam("name")String userName, int age){
System.out.println(userName + ": " + age);
return "请求成功~";
}
3、实体参数
// 实体参数
@RequestMapping("/simplePojo")
public String simplePojo(User user){
System.out.println(user);
return "请求成功~";
}
// 复杂实体参数
@RequestMapping("/complexPojo")
public String complexPojo(User user){
System.out.println(user);
return "请求成功";
}
4、数组集合参数
//数组参数
@RequestMapping("/arrayParam")
public String arrayParam(String[] arr){
System.out.println(Arrays.toString(arr));
return "请求成功";
}
//集合参数
@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> arr){
System.out.println(arr);
return "请求成功";
}
5、json参数
服务端Controller方法接收JSON格式数据:
-
传递json格式的参数,在Controller中会使用实体类进行封装。
-
封装规则:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数。需要使用 @RequestBody标识。
//JSON参数
// 封装规则:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数。
// 需要使用 @RequestBody标识。
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
System.out.println(user);
return "请求成功";
}
// 路径参数
@RequestMapping("/path/{id}/{name}")
public String pathParam(@PathVariable int id,@PathVariable String name){
System.out.println("路径参数:" + id + " "+ name);
return "请求成功";
}
五、统一响应结果
result.java
统一的返回结果使用类来描述,在这个结果中包含:
-
响应状态码:当前请求是成功,还是失败
-
状态码信息:给页面的提示信息
-
返回的数据:给前端响应的数据(字符串、对象、集合)
package com.zqh.demo.pojo;
public class Result {
private Integer code;//响应码,1 代表成功; 0 代表失败
private String msg; //响应码 描述字符串
private Object data; //返回的数据
public Result() { }
public Result(Integer code, String msg, Object data) {
this.code = code;
this.msg = msg;
this.data = data;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
//增删改 成功响应(不需要给前端返回数据)
public static Result success(){
return new Result(1,"success",null);
}
//查询 成功响应(把查询结果做为返回数据响应给前端)
public static Result success(Object data){
return new Result(1,"success",data);
}
//失败响应
public static Result error(String msg){
return new Result(0,msg,null);
}
}
HelloResponse.java
package com.zqh.demo.controller;
import com.zqh.demo.pojo.Address;
import com.zqh.demo.pojo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
// 统一相应结果
@RestController
public class HelloResponse {
// 无参数
@RequestMapping("/helloRes")
public Result hello(){
System.out.println("Hello World ~");
return Result.success("hello");
}
// 响应实例对象
@RequestMapping("/getadr")
public Result getAddress() {
Address address = new Address();
address.setProvince("广东");
address.setCity("惠州市");
System.out.println(address);
return Result.success(address);
}
}