目录
一、创建项目
二、项目结构
三、起步依赖
四、简单请求接口
控制类
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);}}