SpringBoot Restful 接口实现


目录
  • SpringBoot 核心注解
  • SpringBoot Restful 接口实现
  • 封装响应数据


SpringBoot 核心注解

注解 说明
Component 声明为 SpringBoot 的 bean
Repository 用于 dao 层的 bean
Autowired 用于向一个 bean 中注入其他 bean
Service 用于 service 层的 bean
Configuration 用于声明 SpringBoot 的配置文件类
Value("${key)") 获取 SpringBoot 配置文件中的值
Bean 声明其为 bean 实例,常和 Configuration 配合使用

SpringBoot Restful 接口实现

注解 说明
SpringBootApplication SpringBoot 主类,用来加载 SpringBoot 各种特性
RestController SpringBoot 会转换返回值并自动将其写入 HTTP 响应
RequestMapping 用于类和方法,在方法级别时,用于处理 HTTP 的各种方法
RequestBody 将请求 Body 中的 json/xml 对象解析成该参数类型的 JavaBean 对象
PathVariable 处理动态 URI,即 URI 的值可以作为控制器中处理方法的入参
Post/Put/Get/DeleteMapping 在方法的级别上使用,在方法级别时,用于处理 HTTP 的各种方法
RequestParam 处理 get 请求的参数

代码示例:

package com.example.apitestplatform.controller;

import com.example.apitestplatform.entity.User;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping(value="demo")  // 类中所有接口地址的前缀
public class DemoController {

    // @RequestMapping(value="loginGet", method= RequestMethod.GET)
    @GetMapping("loginGet")
    public String loginGet() {
        return "登录成功";
    }

    // @RequestMapping(value="loginPost", method= RequestMethod.POST)
    @PostMapping("loginPost")  // 简便写法
    public String loginPost(@RequestBody User user) {  // 如果没用 @RequestBody,则获取结果为 null
        System.out.println("username : "+user.getUsername());
        System.out.println("password : "+user.getPassword());
        return "登录成功:"+user.getUsername();
    }

    // 访问:http://localhost:8080/demo/userId/1/2
    // @RequestMapping(value="userId/{userId}/{id}", method=RequestMethod.GET)
    @GetMapping("getUser/{userid}/{id}")
    public String loginUser1(@PathVariable("userid") Integer userid, @PathVariable("id") Integer id) {
        System.out.println("userid : "+userid);
        System.out.println("id : "+id);
        return "userid: "+userid+"  id: "+id;
    }

    // 访问:http://localhost:8080/demo/getUser?userid=1&id=2
    // 访问:http://localhost:8080/demo/getUser?user=1&id=2,则 userid 值为 null
    @GetMapping("getUser")
    public String loginUser2(@RequestParam(value="userid", required=false) Integer userid,  // required=false:参数非必须传
                             @RequestParam("id") Integer id) {
        System.out.println("userid : "+userid);
        System.out.println("id : "+id);
        return "userid: "+userid+"  id: "+id;
    }
}

封装响应数据

响应对象类:

package com.example.apitestplatform.common;

import lombok.Builder;
import lombok.Data;

@Data
@Builder  // 作用:调用时使用链式写法
public class ResultResponse {

    private String code;
    private String message;
    private Object data;

}

接口类:

    @GetMapping("loginSuccess")
    public ResponseEntity loginSuccess() {
        User user = new User();
        user.setUsername("xiaoming");
        user.setPassword("admin123");
        ResultResponse resultResponse = ResultResponse.builder().code("00").message("登录成功").data(user).build();
        return ResponseEntity.status(HttpStatus.OK).body(resultResponse);
    }

    @GetMapping("loginFail")
    public ResponseEntity loginFail() {
        User user = new User();
        user.setUsername("xiaoming");
        user.setPassword("admin123");
        ResultResponse resultResponse = ResultResponse.builder().code("02").message("登录失败").data(user).build();
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultResponse);
    }

请求结果:

{"code":"00","message":"登录成功","data":{"username":"xiaoming","password":"admin123"}}

{"code":"00","message":"登录失败","data":{"username":"xiaoming","password":"admin123"}}