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 效果图
相关推荐
777VG20 分钟前
PostgreSQL +martin将多张表输出成一个 MVT
前端·数据库·postgresql
aax12134531 小时前
VOC 集群治理工程实操|美丽蓝天绿岛项目 RTO 工艺选型、管控方案与申报要
大数据·数据库·人工智能
IvorySQL1 小时前
PG 日报|优化缓冲区批量扫描,降低多套接字并发竞争
数据库·人工智能·postgresql·开源·区块链
前端工作日常1 小时前
我学习到的Java中domain和dto区别
java·后端
这个DBA有点耶1 小时前
交易型数据库是什么?OLTP核心能力与2026选型指南
数据库·数据仓库·sql·database·数据库架构·olap·dba
大熊猫侯佩2 小时前
WWDC26 全新 SwiftData 的 .codable 宏选项:它不是泛型专用胶水
数据库·swift·apple
码农学院2 小时前
基于Spring Boot的跨境电商多语言订单管理系统架构设计
java·大数据·spring boot
技术小结-李爽3 小时前
【工具】pom文件的<packaging>
java·maven
l156469483 小时前
突围!图文混合知识库难以解析,Kimi-K3 原生视觉架构深耕知识工作,DMXAPI 统一接口,缩短项目开发周期
java·大数据·开发语言
童谣14 小时前
越华环保集团市级统筹申报数字化中台:政策校验与减排仿真一体化架构
数据库·架构