初次使用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的,而要部署的服务器上往往是已经配置好了一个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);
          }
      }
    2. 打开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

阅读更多
想对作者说点什么?

博主推荐

换一批

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