《Techporters架构搭建》-Day01 第一个RESTful API接口

搭建微服务架构

首先搭建系统管理模块,模块结构如下

tps-cloud
└── tps-system -- 系统管理模块
     └── tps-system-api -- 系统管理模块公共api模块
     └── tps-system-biz -- 系统管理模块业务处理模块[9001]

1.新建Project
① 选择 File -> New -> Project菜单,如下图所示:
在这里插入图片描述
② 选择 Gradle类型,输入名字为 tps-cloud,并点击 Next按钮,如下图所示:
在这里插入图片描述
③ 选择当前稳定的Spring Boot 3.3.1版本,点击Create
在这里插入图片描述
④打开 项目tps-cloud,删除 src 文件夹,然后右击tps-cloud项目创建tps-system模块,如下图所示:
在这里插入图片描述
填写模块名称,选择Gradle
在这里插入图片描述在这里插入图片描述
⑤删除tps-system的src文件夹,并在tps-system模块下新建 tps-system-api 与tps-system-biz模块 ,整个过程和“新建tps-system模块”是一致的,如下图所示:
在这里插入图片描述
在这里插入图片描述
⑥ 服务创建完成后,整体代码结构
在这里插入图片描述
⑦ 点击IDEA右边的Gradle,可以看到项目之间不是父子结构,所以需要调整项目依赖关系
在这里插入图片描述
⑧ 修改tps-cloud项目下settings.gradle文件,通过include命令,删除所有子模块的settings.gradle文件,一个项目该文件只需要一个就行。

rootProject.name = 'tps-cloud'
//系统模块
include 'tps-system'
//系统模块下子模块
include 'tps-system:tps-system-api'
include 'tps-system:tps-system-biz'

分析一下项目的build.gradle

#
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.1'
    id 'io.spring.dependency-management' version '1.1.5'
}

group = 'com.tps.cloud'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
    useJUnitPlatform()
}

plugins(插件)
Gradle 插件的作用,主要有以下几个方面:

  • 添加任务到项目中,可对项目进行测试、编译、打包;
  • 添加依赖到项目中,可用来配置项目构建过程中需要的依赖;
  • 可以向项目中现有的对象类型添加新的扩展属性、方法等,可方便项目的配置和构建优化,比如 Android 项目构建中的 android{}就是 Android Gradle 插件为 Project 对象添加的一个扩展;
  • 可以对项目进行一些约定,如使用 Java Gradle插件可以约定 src/main/java 目录下源代码的存放位置,在编译的时候就可以编译指定目录下的 Java 源代码文件。

repositories (仓库)
Gradle默认使用Maven的中心库下载依赖包;
如果从中心库下载jar包的速度慢,我们可以通过阿里云或者腾讯云的Maven库镜像来加速,当然也可以使用你公司内部的Maven库私服来加速。

maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }

dependecies(依赖)
我们只需要按照下面的格式即可引入依赖:

implementation group: '***', name: '***', version: '***'

或简写成:

implementation 'group:name:version'

因为插件,只要被Spring Boot所管理的依赖,版本也无须维护,可以更加精简的写成:

implementation 'group:name'

如果你想找某个依赖包,可以通过https://mvnrepository.com/查找添加依赖
在这里插入图片描述一般情况下,我们会把复制来的版本号给去掉,以防Spring Boot已经对它做了版本管理,这样我们就能直接下载兼容性良好的依赖包;如果去掉版本后不能下载依赖包,意味着Spring Boot没有做该包的版本管理,这时我们按照自己的需要添加合适的版本号。
下面看看其他几个依赖的关键字,一般情况下我们不需要过多的关注。
测试依赖:testImplementation,测试相关的依赖,使用testImplementation,规则和普通依赖一致。

dependencies {
	//...
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

编译依赖:compileOnly,只在编译期起效的依赖。

dependencies {
	//...
	compileOnly 'org.projectlombok:lombok'
  //...
}

运行时依赖:runtimeOnly,只在运行时起效的依赖。

dependencies {
	//...
	runtimeOnly 'com.mysql:mysql-connector-j'
	//...
}

添加Demo接口

① 在 com.tps.cloud.system包,新建一个 DemoController 类,并新建一个 /demo/get 接口。代码如下:

package com.tps.cloud.system.controller;

@RestController
@RequestMapping("/demo")
public class DemoController {

    @GetMapping("/get")
    public String get() {
        return "恭喜你,你的接口通了!";
    }
}

② 上面代码肯定是报错,因为很多注解我们并没有引入相对应的Spring启动器,通过IDEA快捷键,可以查看IDEA建议我们引入spring-boot-starter-web
在这里插入图片描述
③ 在模块tps-system-biz下的build.gradle文件添加spring-boot-starter-web依赖,然后Gradle reload一下,Gradle会去下载依赖包在这里插入图片描述
④ 现在我们可以引入相关依赖包,通过错误提示
在这里插入图片描述
引入相关类

package com.tps.cloud.system.controller;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/demo")
public class DemoController {

    @GetMapping("/get")
    public String get() {
        return "恭喜你,你的接口通了!";
    }
}

⑤ 将tps-system-biz服务运行起来,默认接口是8080
在这里插入图片描述
通过Postman或者Apifox调用接口http://localhost:8080/demo/get,查看返回结果。
在这里插入图片描述
现在我们已经成功启动一个微服务,并且调通 一个RESTful API 接口,当然这个接口目前的功能很简单,下一章我们将数据库集成进来,做一个表的增删改查功能

相关推荐

  1. Django(四)-第一应用(3)

    2024-07-20 20:20:01       43 阅读
  2. [RP2040]第一自定义项目

    2024-07-20 20:20:01       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 20:20:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 20:20:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 20:20:01       45 阅读
  4. Python语言-面向对象

    2024-07-20 20:20:01       55 阅读

热门阅读

  1. GO Channel使用详解(各种场景下的最佳实践)

    2024-07-20 20:20:01       14 阅读
  2. Linux输出重定向到文件立即输出

    2024-07-20 20:20:01       19 阅读
  3. buuctf-reverse write-ups (1)

    2024-07-20 20:20:01       12 阅读
  4. Android init.rc各阶段的定义和功能

    2024-07-20 20:20:01       19 阅读
  5. tebi.io免费对象存储,可托管静态网站

    2024-07-20 20:20:01       18 阅读
  6. 【vueUse库Array模块各函数简介及使用方法--下篇】

    2024-07-20 20:20:01       18 阅读
  7. 面经学习(厦门安全狗实习)

    2024-07-20 20:20:01       15 阅读
  8. 【项目-轻量级Web Server 定时器模块】

    2024-07-20 20:20:01       12 阅读
  9. C++学习笔记-用const修饰的类成员函数

    2024-07-20 20:20:01       14 阅读
  10. 量化机器人如何助力定量分析?

    2024-07-20 20:20:01       18 阅读
  11. 桌面应用打开默认全屏功能

    2024-07-20 20:20:01       17 阅读