如何使用 springboot 创建简单的 rest api
先决条件
项目设置
项目结构说明
代码
创建您的第一个 API
恭喜😄
创建第二个 API
恭喜😄
这篇文章最初发表于adityasridhar.com
作为本文的一部分,您将使用 Springboot 构建两个简单的 REST API。本文将介绍如何快速上手 Springboot。
那么让我们开始吧😄
先决条件
在开始本文之前,请确保您的系统中已安装 Maven。
您可以从https://maven.apache.org/安装 Maven
还要确保 Maven 设置在 PATH 中,以便mvn
命令能够正常工作。
您可以验证 Maven 是否已安装,并且可以使用命令进行访问
mvn -v
还要确保设置了JAVA_HOME 。
项目设置
第一步是设置您的项目。
设置 Springboot 项目非常简单。
在站点中,输入simple-rest-apis作为 Artifact 名称,并在依赖项下添加Web。您也可以输入任何其他 Artifact 名称。
另外,请确保您使用 Springboot 2.0.6版本创建了一个Java Maven项目,以确保本文的结果可复现。完成本文后,您可以选择其他选项进行实验 😄
输入信息后,屏幕应如下所示
点击“生成项目”,这会将一个 zip 文件下载到你的电脑上。解压此 zip 文件。解压后的文件夹就是你的 SpringBoot 项目。
您可以将项目导入到您喜欢的 IDE 中。我使用 Eclipse 进行了尝试。
项目结构说明
pom.xml
此文件包含所有 Maven 依赖项。
需要注意的主要依赖项如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web依赖项确保项目可用于 Web 应用程序
另外,在 pom.xml 中需要注意的另一件重要的事情是
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
spring-boot-starter-parent被设置为该项目的父级。这确保 springboot 所需的任何内部依赖项都会自动处理,开发人员无需担心。
简单RestApis应用程序.Java
该文件以项目名称加上应用程序命名。
该文件位于src/main/java文件夹和com.example.simplerestapis包内。
该文件包含以下代码
package com.example.simplerestapis;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SimpleRestApisApplication {
public static void main(String[] args) {
SpringApplication.run(SimpleRestApisApplication.class, args);
}
}
这里最主要的亮点是注解@SpringBootApplication。它内部是以下 3 个注解的组合
- @Configuration:手动 Spring 配置所需。添加此注解可确保配置可以在 Java 类本身中完成,而无需使用单独的 XML 文件。
- @EnableAutoConfiguration:Spring 需要进行大量配置。此注解可确保许多配置自动完成。
- @ComponentScan:这告诉 Spring 在哪里扫描所有组件。
LineSpringApplication.run(SimpleRestApisApplication.class, args);
引导应用程序。
应用程序.properties
该文件位于src/main/resources目录下。该文件可用于列出应用程序运行时需要用到的各种属性。例如,它可以用来指定应用程序应该在哪个端口上运行。
代码
此处构建的 API 代码可在此处找到
创建您的第一个 API
我们的第一个 API 将是演示 GET 请求的简单 API。
创建一个名为com.example.simplerestapis.models的包。在此包中创建一个名为SampleResponse.java的文件
将以下代码复制到SampleResponse.java中
package com.example.simplerestapis.models;
public class SampleResponse {
private String message;
private long id;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
SampleResponse.java只是一个模型类。它指示 API 响应中存在的字段。
创建一个名为com.example.simplerestapis.controller的包。在此包中创建一个名为WebController.java的文件
将以下代码复制到WebController.java中
package com.example.simplerestapis.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.example.simplerestapis.models.SampleResponse;
@RestController
public class WebController {
@RequestMapping("/sample")
public SampleResponse Sample(@RequestParam(value = "name",
defaultValue = "Robot") String name) {
SampleResponse response = new SampleResponse();
response.setId(1);
response.setMessage("Your name is "+name);
return response;
}
}
在上面的代码中,注解@RestController表示该类将包含 Rest 端点。
该注解的作用是表明该类是一个控制器,并且该类中函数的返回值将被转换为 JSON 或 XML 格式。默认格式为 JSON。
@RequestMapping将/sample端点映射到Sample Function
@RequestParam表示端点/sample将有一个名为name的查询参数。name的默认值为“Robot”。
函数内部的代码非常简单。响应是根据名称值设置的。
进入命令提示符。进入项目文件夹并运行以下命令来启动应用程序
mvn spring-boot:run
默认情况下,应用程序在本地主机的端口 8080 上运行。
为了测试 api 端点,您可以使用Postman。从给定的链接下载 postman。
转到 postman 并输入以下 url
localhost:8080/sample?name=aditya并点击发送。
这将返回以下响应
{
"message": "Your name is aditya",
"id": 1
}
现在尝试以下 URL
localhost:8080/sample并点击发送
这将返回以下响应
{
"message": "Your name is Robot",
"id": 1
}
恭喜😄
您已使用 SpringBoot 创建了第一个 API。您已学习了如何创建一个简单的带有查询参数的GET REST API 。
创建第二个 API
第二个 API 将演示如何创建支持 POST 请求的 API
在com.example.simplerestapis.models包中,创建一个名为PostRequest.java的 Java 类
将以下代码复制到PostRequest.java中
package com.example.simplerestapis.models;
public class PostRequest {
int id;
String name;
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
POST 请求通常包含 POST 主体,作为输入发送。PostRequest.java指示输入POST 主体中存在的所有字段
在com.example.simplerestapis.models包中,创建一个名为PostResponse.java的 Java 类
将以下代码复制到PostResponse.java中
package com.example.simplerestapis.models;
public class PostResponse {
int id;
String message;
String extra;
public String getExtra() {
return extra;
}
public int getId() {
return id;
}
public String getMessage() {
return message;
}
public void setExtra(String extra) {
this.extra = extra;
}
public void setId(int id) {
this.id = id;
}
public void setMessage(String message) {
this.message = message;
}
}
PostResponse.java指示 POST 请求输出中存在的字段。
在WebController.java中添加以下导入
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMethod;
import com.example.simplerestapis.models.PostRequest;
import com.example.simplerestapis.models.PostResponse;
还在WebController.java中添加以下函数
@RequestMapping(value = "/test", method = RequestMethod.POST)
public PostResponse Test(@RequestBody PostRequest inputPayload) {
PostResponse response = new PostResponse();
response.setId(inputPayload.getId()*100);
response.setMessage("Hello " + inputPayload.getName());
response.setExtra("Some text");
return response;
}
此代码创建一个名为/test 的新端点并将其映射到测试函数
代码还method = RequestMethod.POST
表明/test api 端点可以接受 POST 请求
@RequestBody PostRequest inputPayload表示该 post 请求将包含一个PostRequest类型的输入 post 主体。输入 post 主体存储在inputPayload对象中。
代码非常简单,其中根据即将到来的输入设置响应。
输入有效载荷的id乘以 100 并设置为输出有效载荷
name参数附加Hello并设置为输出有效负载
额外参数被硬编码为某些文本的字符串值
WebController.java中的最终代码如下
package com.example.simplerestapis.controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.example.simplerestapis.models.PostRequest;
import com.example.simplerestapis.models.PostResponse;
import com.example.simplerestapis.models.SampleResponse;
@RestController
public class WebController {
@RequestMapping("/sample")
public SampleResponse Sample(@RequestParam(value = "name",
defaultValue = "Robot") String name) {
SampleResponse response = new SampleResponse();
response.setId(1);
response.setMessage("Your name is "+name);
return response;
}
@RequestMapping(value = "/test", method = RequestMethod.POST)
public PostResponse Test(@RequestBody PostRequest inputPayload) {
PostResponse response = new PostResponse();
response.setId(inputPayload.getId()*100);
response.setMessage("Hello " + inputPayload.getName());
response.setExtra("Some text");
return response;
}
}
进入命令提示符。进入项目文件夹并运行以下命令来启动应用程序
mvn spring-boot:run
打开 Postman 并设置如下图所示的值
基本上请求类型设置为POST
enpoint URL 输入为localhost:8080/test
要输入帖子正文,请转到Body,选择raw并选择JSON (application/json)
给出的输入 POST 主体如下
{
"id": 1,
"name": "aditya"
}
单击“发送”后,将显示以下输出
{
"id": 100,
"message": "Hello aditya",
"extra": "Some text"
}
您可以通过发送不同的输入帖子主体来尝试这一点。
恭喜😄
现在您知道如何使用 Springboot 创建基于简单 GET 和 POST 请求的 REST APIS 😄
您可以访问https://spring.io/了解有关 Spring 和 Springboot 的更多信息