[RestfulTool] 使用RestfulTool插件模拟前端向后端发送请求体,通过SpringMVC结合MyBaits响应返回体

 ✨✨个人主页:沫洺的主页

📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 

                           📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏

                           📖Docker专栏📖Reids专栏📖MQ专栏📖SpringCloud专栏     

💖💖如果文章对你有所帮助请留下三连✨✨

🎨搭建案例环境

📌创建数据库db5,表user_email

📌创建maven Web项目,pom.xml添加坐标依赖,配置tomcat

📍pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.beiyou</groupId>
  <artifactId>cms-api</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>cms-api Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <!--引入webmvc-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.2</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>5.8.5</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.16.10</version>
    </dependency>


    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.12.0</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>5.3.2</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.19</version>
      <scope>runtime</scope>
    </dependency>
    <!--mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.9</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.6</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.3.2</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.12</version>
    </dependency>


    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>


  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <!--端口号-->
          <port>8080</port>
          <!--虚拟目录-->
          <path>/</path>
          <!--解决tomcat7及以前get乱码-->
          <uriEncoding>utf-8</uriEncoding>
        </configuration>
      </plugin>
    </plugins>
    <finalName>cms-api</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

📌搭建SpringMVC运行环境

📍web.xml配置前端控制器DispatcherServlet

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
  <!--前端控制器-->
  <servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
    <!-- / 代表: 所有请求都交给springDispatcherServlet处理-->
  </servlet-mapping>


</web-app>

📍resources下创建spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation=" http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
      ">
    <context:component-scan base-package="com.moming"/>

    <!--<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">-->
    <!--    <property name="dataSource" ref="dataSource" />-->
    <!--    <property name="mapperLocations" value="classpath:mapper/**.xml" />-->
    <!--    <property name="typeAliasesPackage" value="com.moming.entity"/>-->
    <!--</bean>-->

    <!--<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">-->
    <!--    <property name="basePackage" value="com.moming.dao" />-->
    <!--    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />-->
    <!--</bean>-->
</beans>

📍java下新建com/moming/config/WebConfig

package com.moming.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.nio.charset.StandardCharsets;
import java.util.List;

/**
 * mvc配置文件
 */
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        for (HttpMessageConverter<?> converter:converters){
            if(converter instanceof StringHttpMessageConverter){
                ((StringHttpMessageConverter)converter).setDefaultCharset(StandardCharsets.UTF_8);
            }
            if(converter instanceof MappingJackson2HttpMessageConverter){
                ((MappingJackson2HttpMessageConverter)converter).setDefaultCharset(StandardCharsets.UTF_8);
            }

        }
    }
}

📌配置MyBatis

📍在resources下创建druid.properties

username=root
password=123456
url=jdbc:mysql:///db5?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowMultiQueries=true
driverClassName=com.mysql.cj.jdbc.Driver
initialSize=5
maxActive=10
maxWait=3000

📍创建config/DbConfig

package com.moming.config;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.support.TransactionTemplate;

import javax.sql.DataSource;
import java.io.InputStream;
import java.util.Properties;

/**
 * 数据库配置文件
 */
@Configuration
@MapperScan("com.moming.dao")
public class DbConfig {

    /**
     * 手动注册 Druid dataSource 数据源
     * @return DataSource
     */
    @Bean
    public DataSource dataSource() throws Exception {

        InputStream resourceAsStream = DbConfig.class.getClassLoader().getResourceAsStream("druid.properties");
        Properties prop = new Properties();
        prop.load(resourceAsStream);
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        return dataSource;
    }



    /**
     * 手动注册 JdbcTemplate
     * @return JdbcTemplate
     */
    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource){

        JdbcTemplate jdbcTemplate  = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource);
        return jdbcTemplate;

    }

    /**
     * 事务管理器
     * @param dataSource
     * @return
     */
    @Bean
    public DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource){
        DataSourceTransactionManager  transactionManager  = new DataSourceTransactionManager();
        transactionManager.setDataSource(dataSource);
        return transactionManager;
    }

    /**
     * 事务模板
     * @param dataSourceTransactionManager
     * @return
     */
    @Bean
    public TransactionTemplate transactionTemplate(DataSourceTransactionManager dataSourceTransactionManager){

        TransactionTemplate transactionTemplate  = new TransactionTemplate(dataSourceTransactionManager);
        //transactionTemplate.setTransactionManager(dataSourceTransactionManager);
        return transactionTemplate;

    }
    /**
     * SqlSessionFactory
     * @param
     * @return
     */

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource());
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource[] resources = resolver.getResources("classpath:mapper/**.xml");
        sqlSessionFactoryBean.setMapperLocations(resources);
        sqlSessionFactoryBean.setTypeAliasesPackage("com.moming.entity");
        return  sqlSessionFactoryBean.getObject();
    }
}

📍在resources下创建mapper/user.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.moming.dao.UserDao">

</mapper>

📍创建com/moming/entity/UserEntity实体类

package com.moming.entity;

import lombok.Data;

/**
 * 对应数据表的实体类
 */
@Data
public class UserEntity {
    private Integer id;
    private String email;
    private String password;
}

📍创建com/moming/entity/UserEntityQuery查询参数类

package com.moming.entity;

import lombok.Data;

/**
 * 查询参数类
 */
@Data
public class UserEntityQuery {

    private Integer id;
    private String email;
    private Integer[] ids;
}

📌创建拦截器对响应数据进行协议包装

📍com/moming/advice/MyResponseAdvice

package com.moming.advice;

import cn.hutool.json.JSONUtil;
import com.moming.dto.ResponseDto;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

/**
 * 拦截器
 */
@ControllerAdvice
@ResponseBody
public class MyResponseAdvice implements ResponseBodyAdvice<Object> {

    @ExceptionHandler(Exception.class)
    public Object processException(Exception ex){
        ResponseDto responseDto  = new ResponseDto();
        responseDto.setCode(1);
        responseDto.setMessage(ex.getMessage());
        return  responseDto;
    }

    @Override
    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
        return true;
    }
    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {

        if(body instanceof  ResponseDto){
            return  body;
        }
        ResponseDto  responseDto  = new ResponseDto();
        responseDto.setCode(0);
        responseDto.setMessage("请求成功");
        responseDto.setData(body);

        if (selectedConverterType == StringHttpMessageConverter.class) {
            return JSONUtil.toJsonStr(responseDto);
        } else {
            return responseDto;
        }


    }
}

📍创建com/moming/dto/ResponseDto数据传输类

package com.moming.dto;

import lombok.Data;

/**
 * 数据传输对象
 */
@Data
public class ResponseDto {
    private int code;
    private  String message;
    private Object  data;
}

📌SpringMVC

📍数据访问层

创建com/moming/dao/UserDao

package com.moming.dao;

import com.moming.entity.UserEntity;
import com.moming.entity.UserEntityQuery;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 数据访问层
 */
//@Repository
@Mapper
public interface UserDao {
    /**
     * 查
     * @param query
     * @return
     */
    @Select("select * from user_email where id=#{id}")
    List<UserEntity> select(UserEntityQuery query);

    /**
     * 增
     * @param userEntity
     * @return
     */
    @Insert("insert into user_email (email,password) values (#{email},#{password})")
    @SelectKey(statement = "select LAST_INSERT_ID() as id", keyProperty = "id", keyColumn = "id", before = false, resultType = Integer.class)
    int insert(UserEntity userEntity);

    /**
     * 改
     * @param userEntity
     * @return
     */
    @Update("update user_email set email=#{email},password=#{password} where id=#{id} ")
    int update(UserEntity userEntity);

    /**
     * 删
     * @param id
     * @return
     */
    @Delete("delete from user_email where id=#{id}")
    int delete(int id);
}

📍业务层

创建com/moming/service/UserService

package com.moming.service;

import com.moming.dao.UserDao;
import com.moming.entity.UserEntity;
import com.moming.entity.UserEntityQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 业务层
 */
@Service
public class UserService {

    @Autowired
    private UserDao userDao;

    /**
     * 查
     * @param id
     * @return
     */
    public List<UserEntity> select(int id){
        UserEntityQuery query = new UserEntityQuery();
        query.setId(id);
        return userDao.select(query);
    }

    /**
     * 增
     * @param userEntity
     * @return
     */
    public int insert(UserEntity userEntity){
        return userDao.insert(userEntity);
    }

    /**
     * 改
     * @param userEntity
     * @return
     */
    public int update(UserEntity userEntity){
        return userDao.update(userEntity);
    }

    /**
     * 删
     * @param id
     * @return
     */
    public int delete(int id){
        return userDao.delete(id);
    }
}

📍接口层

创建com/moming/controller/UserController

package com.moming.controller;

import com.moming.entity.UserEntity;
import com.moming.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 接口层
 */
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 查
     * @param id
     * @return
     */
    @GetMapping("/select")
    public List<UserEntity> select(@RequestParam("id") int id){
        return userService.select(id);
    }

    /**
     * 增
     * @param userEntity
     * @return
     */
    @PostMapping("/insert")
    public int insert(@RequestBody UserEntity userEntity){
        int rowNum = userService.insert(userEntity);
        return rowNum;
    }

    /**
     * 改
     * @param userEntity
     * @return
     */
    @PutMapping("/update")
    public int update(@RequestBody UserEntity userEntity){
        return userService.update(userEntity);
    }

    /**
     * 删
     * @param id
     * @return
     */
    @GetMapping("/delete")
    public int delete(@RequestParam("id") int id){
        return userService.delete(id);
    }

}

🎨使用插件模拟前端向后端发送请求体

💦模拟查询

🎏注意get不识别请求体,可以通过url传参

🎏运行发送请求体

💦模拟添加

 🎏运行发送请求体

💦模拟修改

 🎏运行发送请求体

💦模拟删除

 🎏运行发送请求体

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沫洺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值