二、SpringBoot项目简单接口实例

434 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

helloWord 接口示例

接上篇一、IDEA 2022 中Maven创建SpringBoot项目流程 - 掘金 (juejin.cn)

上篇我们创建了一个SpringBoot项目。还记得我们的思路嘛,后端搞个接口,前端调用这个接口

现在我们要做的就是搞个接口出来, 当然这里只是一个最简单的接口。不会有复杂业务逻辑,但是确实能够让我们真正实现调用。

1.在demo包下新建conroller包并新建一个测试的类TestController

这个新建不需要演示了吧,右键new就行。

  • new -> package
  • new -> java class

最后的目录路径如下:

image.png

1.1 启动类DemoApplication代码是项目直接给你写好的,如下:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {

        SpringApplication.run(DemoApplication.class, args);
        System.out.println("----- http://localhost:8880/demo/ -----");# 这句是自己加的
    }

}

1.2创建TestController

TestController代码如下:

package com.example.demo.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
@RequestMapping("/test")
public class TestController {

    @GetMapping(value = "/hello", name = "返回Hello World")
    public String hello(@RequestParam(value = "name", required = false) String name) {
        return String.format("Hello %s! ", name == null ? "World" : name);
    }
}


这个@RequestMapping("/test")可以不加的。 image.png

如果加了,之后访问的时候就要多加一个前缀/test

@GetMapping这就是说这个是个get方法,与之对应的还有几个@PostMapping、@PutMapping、@DeleteMapping这四个都是可以选的,只是演示个简单接口就用最简单的get了。

1.3在application.yml中加入:

server:
    port: 8880
    servlet:
        context-path: /demo

如果是application.properties文件写入:

server.port: 8880
server.servlet.context-path: /demo
  • port: 8880我们开的端口
  • context-path: /demo 我们访问的最前缀,可以自己改 所以如果再加上前面的那个一个testhello前缀,我们访问就是通过 http://localhost:8880/demo/test/hello 来访问我们的测试接口了。

2运行项目

下面运行启动类:

image.png 在浏览器输入http://localhost:8880/demo/test/hello 即可看到

image.png

一个简单的接口告成了!!!

个人总结:

第一坑,创建包的目录层级:

这个包的目录记得拖进去,当然这个影响不大,平级包也不是什么大问题,反正能跑。就是为了设计规范点?

image.png

第二坑:yml和properties配置文件区别:

  1. 内容格式比较:
  • .properties文件,通过.来连接,通过=来赋值,结构上,没有分层的感觉,但比较直接。
  • .yml文件,通过:来分层,结构上,有比较明显的层次感,最后key赋值的:后需要留一个空格

2.执行顺序:

  • 如果工程中同时存在application.properties文件和 application.yml文件,yml文件会先加载,而后加载的properties文件会覆盖yml文件。

  • 建议工程中,只使用其中一种类型的文件即可。

感受一下不同之处:

  • application.properties:
server.port=8081
 
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.url=jdbc:mysql://aliyuncs.com:3306/database?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true
spring.datasource.username=root
spring.datasource.password=******
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

  • application.yml:
server:
  port: 8082
  
spring:
    datasource:
        name: test
        url: jdbc:mysql://127.0.0.1:3306/database
        username: root
        password: ******
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver复制代码

所以上述需要改成yml后缀的properties其实可以这样写:

application.properties:

server.port: 8880
server.servlet.context-path: /demo

第三坑:pom.xml爆红

不知为啥,反正能跑,原因待查.能跑的代码就是好代码