JAVA 使用spring boot 搭建WebAPI项目

SpringBoot是一个脚手架,用于快速搭建一个基于Spring的web应用,开箱即用!创建即可开发业务代码。其设计目的是用来简化 Spring 应用的初始搭建以及开发过程

复制代码
1、Controller 层
java 复制代码
package com.example.demo2.controller;

import com.example.demo2.pojo.Dto.UserDto;
import com.example.demo2.pojo.ResponseMessage;
import com.example.demo2.pojo.User;
import com.example.demo2.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

@RestController  //接口返回对象 转换成Json文本
@RequestMapping("/user")    //localhost:8088/user/**

public class UserController {

    @Autowired
    IUserService userService;


    @PostMapping("Add")
    public  ResponseMessage Add(@Validated @RequestBody UserDto user){

        User userPojo=userService.Add(user);
        return ResponseMessage.success(userPojo);
     }

    @GetMapping("/{userId}")
     public  ResponseMessage Get(@PathVariable Integer userId){
         User userPojo= userService.GetUser(userId);
         return ResponseMessage.success(userPojo);
    }

    @PutMapping("Eidt")
    public  ResponseMessage Eidt(@Validated @RequestBody UserDto user){

        User userPojo=userService.Eidt(user);
        return ResponseMessage.success(userPojo);
    }

    @DeleteMapping("/{userId}")
    public  ResponseMessage Delete(@PathVariable Integer userId){
        userService.Delete(userId);
        return ResponseMessage.success();
    }
}
复制代码
Service层
java 复制代码
package com.example.demo2.controller;

import com.example.demo2.pojo.Dto.UserDto;
import com.example.demo2.pojo.ResponseMessage;
import com.example.demo2.pojo.User;
import com.example.demo2.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

@RestController  //接口返回对象 转换成Json文本
@RequestMapping("/user")    //localhost:8088/user/**

public class UserController {

    @Autowired
    IUserService userService;


    @PostMapping("Add")
    public  ResponseMessage Add(@Validated @RequestBody UserDto user){

        User userPojo=userService.Add(user);
        return ResponseMessage.success(userPojo);
     }

    @GetMapping("/{userId}")
     public  ResponseMessage Get(@PathVariable Integer userId){
         User userPojo= userService.GetUser(userId);
         return ResponseMessage.success(userPojo);
    }

    @PutMapping("Eidt")
    public  ResponseMessage Eidt(@Validated @RequestBody UserDto user){

        User userPojo=userService.Eidt(user);
        return ResponseMessage.success(userPojo);
    }

    @DeleteMapping("/{userId}")
    public  ResponseMessage Delete(@PathVariable Integer userId){
        userService.Delete(userId);
        return ResponseMessage.success();
    }
}
复制代码
IUserService 接口定义
java 复制代码
package com.example.demo2.service;

import com.example.demo2.pojo.Dto.UserDto;
import com.example.demo2.pojo.User;

public interface IUserService {


    User Add(UserDto user);

    User GetUser(Integer userId);

    User Eidt(UserDto user);

    void Delete(Integer userId);
}
复制代码
Repository数据库访问层
java 复制代码
package com.example.demo2.repository;

import com.example.demo2.pojo.User;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository //spring bean
public interface IUserRepository extends CrudRepository<User, Integer> {
}

model层

java 复制代码
package com.example.demo2.Model;

import jakarta.persistence.*;

@Table(name = "tb_user")
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_Id")
    private Integer userId;
    private String userName;
    private String passWord;
    private String email;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
                "userName='" + userName + '\'' +
                ", userId=" + userId +
                ", passWord='" + passWord + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

Dto 用于model数据转换

java 复制代码
package com.example.demo2.Model.Dto;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import org.hibernate.validator.constraints.Length;

public class UserDto {
    private Integer userId;
    @NotBlank(message = "用户名不能为空")
    private String userName;

    @NotBlank(message = "密码不能为空")
    @Length(min=6, max=12)
    private String passWord;

    @Email(message ="email格式不正确")
    private String email;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "UserDto{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                ", passWord='" + passWord + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

定义一个ResponseMessage用于接口统一格式响应

java 复制代码
package com.example.demo2.Model;

import org.springframework.http.HttpStatus;

public class ResponseMessage<T>{
    private int code;
    private String message;
    private T data;

    public ResponseMessage(int code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }


    public  static <T>ResponseMessage<T> success(T data) {

        return new ResponseMessage<T>(HttpStatus.OK.value(), "success", data);
    }

    public  static <T>ResponseMessage<T> success() {

        return new ResponseMessage<T>(HttpStatus.OK.value(), "success", null);
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

}
复制代码
定义一个类GlobalExceptionHanderAdvice用于异常统一处理
java 复制代码
package com.example.demo2.execption;

import com.example.demo2.Model.ResponseMessage;
import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice  //统一处理异常
public class GlobalExceptionHanderAdvice {

    Logger log=  LoggerFactory.getLogger(GlobalExceptionHanderAdvice.class);


    @ExceptionHandler({Exception.class})  //什么异常的统一处理
    public ResponseMessage handleException(Exception e, HttpServletRequest request){
        log.error("统一异常",e);
        return new ResponseMessage<>(500,"error",null);

    }
}

配置swagger文档 ,在pom.xml中 添加依赖, 需要注意和你的spring boot 版本

XML 复制代码
       <!-- Springdoc OpenAPI -->
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>3.0.0</version> <!-- 确认与Spring Boot 4.0.2兼容 -->
        </dependency>
复制代码
swagger访问地址 :localhost:8088/swagger-ui/index.html 效果图
相关推荐
量子炒饭大师2 小时前
【C++入门】—— 【什么时候需要用到深拷贝】C++的类中何时需要用到深拷贝?保姆级别带你罗列所有可能!
java·c++·dubbo·深拷贝
胡斌附体2 小时前
oracle-xe创建
数据库·oracle
小信丶2 小时前
@EnableMethodCache 注解详解:原理、应用场景与示例代码
java·spring boot·后端·spring
翼龙云_cloud2 小时前
亚马逊云渠道商:AWS RDS数据库如何应用?
数据库·云计算·aws
坊钰2 小时前
【Rabbit MQ】Rabbit MQ 的结构详解,传输机制!!!
java·rabbitmq
Psycho_MrZhang2 小时前
Claude高质量产出
java·服务器·网络
运维行者_2 小时前
用Applications Manager监控HAProxy:保障负载均衡高效稳定
运维·开发语言·前端·数据库·tcp/ip·负载均衡·服务器监控
weixin199701080162 小时前
汽车之家item_search - 根据地区获取二手车列表接口对接全攻略:从入门到精通
数据库·汽车