初次使用springboot搭建api踩过的坑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hydrion619/article/details/80317021

最近在学习spring boot,刚好在做的一个项目需要一个上传数据的api接口,接口需要通过post方法访问,以json的格式传输数据。简单地搭建好这个接口后,调试时还是遇到了许多问题。(使用的IDE是Intellij IDEA)

  • 本地调试时总是报 415:Unsupported media type
    可能是测试时没有设置请求头的*“Content-Type”,可以在测试工具里添加这个值,因为我的api规定是以json格式传输数据,如果不设置content-type为“application/json;charset=UTF-8”*,就会把上传的json数据当成普通的字符串处理,从而产生问题。
    顺带一提,intellij自带了http的测试工具,Tools -> HTTP Client -> Test Restful Web Service

  • 上传到服务器的准备
    项目完成后,本地调试没有问题,准备打包部署到服务器里。springboot工程在本地运行时,其实是自带tomcat的。如果你希望将项目打包成一个war文件,然后运行在服务器已经有的tomcat上,就需要对项目做一些更改。
    1. 将启动类(Application类)继承SpringBootServletInitializer并重写configure方法,示例:
    @SpringBootApplication
    @EnableTransactionManagement
    public class IschoolApplication extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(IschoolApplication.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(IschoolApplication.class, args);
        }
    }
    
    1. 打开pom.xml,做出如下修改:
      修改packaging标签:<packaging>war</packaging>
      找到spring-boot-starter-web并修改为:
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
          <exclusions>
              <exclusion>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-tomcat</artifactId>
              </exclusion>
          </exclusions>
      </dependency>
    
    接着添加一个依赖:
    <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
      </dependency>
    
    现在就可以在IDEA最右边的Maven Projects -> package处打包成war文件了

  • 打包成war时,在测试阶段报错
    直接package打包会自动进行test,而因为之前已经改变了项目的配置,再测试的话就可能会出问题,其实这里可以直接跳过test阶段。
    在pom.xml做出如下修改:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.21.0</version>
    <configuration>
        <skipTests>true</skipTests>
    </configuration>
</plugin>

package完成后在target文件夹下就能看到打包好的war文件了,拷贝到服务器端的webapps文件夹下,tomcat就会自动解压并运行,部署就完成了。

项目完整代码地址:https://github.com/Hydri0n/ischool

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭