利用Spring Boot构建restful web service的详细流程

本文档构建一个简单的restful webservice, 在官网原文Getting Started | Building a RESTful Web Service (spring.io)的基础上进行操作

文章目录

一、项目创建流程

本文的目标是构建一个服务,该服务将在http://localhost:8080/greeting接受HTTP GET请求

它将使用greeting的JSON表示进行响应,如下所示:

复制代码
{"id":1,"content":"Hello, World!"}

1.1 创建项目

在官网上Spring Initializr创建项目

1.2 创建资源表示类

对greeting表示进行建模,创建一个资源表示类。

具体操作:为id和content提供一个Java record类,在/src/main/java/com/zouhu/restservice/Greeting.java添加如下代码

复制代码
package com.zouhu.restservice;

public record Greeting(long id, String content) {
}

此应用程序使用Jackson JSON库自动将greeting类型的实例列表到JSON中。

1.3 创建资源控制类

在Spring构建RESTful Web服务的方法中,HTTP请求由控制器处理。

这些组件由@RestController注释标识,下面代码中所示的GreetingController(来自src/main/java/com/example/restservice/GreetingController.java)通过返回一个greeting类的新实例来处理 /greeting的GET请求:

复制代码
package com.zouhu.restservice;

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

import java.util.concurrent.atomic.AtomicLong;

@RestController
public class GreetingController {
    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @GetMapping("/greeting")
    public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
        return new Greeting(counter.incrementAndGet(), String.format(template, name));
    }
}

传统的MVC控制器和前面显示的RESTful Web服务控制器之间的一个关键区别是创建HTTP响应主体的方式 。这个RESTful Web服务控制器不依赖视图技术将Greeting数据执行到HTML,而是填充并返回一个Greeting对象。对象数据将作为JSON直接写入HTTP响应。

二、项目运行

运行RestserviceApplication类,启动项目

访问http://localhost:8080/greeting, 结果如下:

复制代码
{
    "id": 1,
    "content": "Hello, World!"
}

访问http://localhost:8080/greeting?name=zouhu, 结果如下:

复制代码
{
    "id": 2,
    "content": "Hello, zouhu!"
}

注意id属性是如何从1更改为2的。这证明您正在跨多个请求处理同一个GreetingController实例,并且它的计数器字段在每次调用时都按预期递增。

参考资料

Getting Started | Building a RESTful Web Service (spring.io)

相关推荐
不停喝水2 分钟前
【前端转全栈java速通课】 项目实战④12-14节 拦截器过滤器和全局配置-cors跨域设置-token体系-利用session做验证码
java·开发语言·前端·ai·容器
代码猎人6 分钟前
怎么开发一个微信小程序
前端
console.log('npc')9 分钟前
第 3 章 工程化与项目初始化
前端·人工智能·大模型
掘金者阿豪14 分钟前
数据集成软件不能只看“同步成功”:聊聊金仓 KFS 和订单数据同步这件事
前端·后端
风骏时光牛马16 分钟前
Navicat Premium 18 自动续试用天数
前端
霸道流氓气质25 分钟前
MinIO 入门与实战:S3 兼容对象存储、Spring Boot 集成与 AI 应用文件管理
人工智能·spring boot·后端
hunterandroid33 分钟前
HarmonyOS HUKS 密钥全生命周期实战:生成、轮换与失效处理
前端·华为
东鹏特饮42 分钟前
贪吃蛇小游戏html
前端·javascript·html
溪语流沙44 分钟前
【每天一个CSS | Day23】边框上有一道光在跑的流光呼吸卡片
前端·css
小马不起床1 小时前
零基础玩转 FastAPI_10:前端登录、权限与布局
前端·状态模式·fastapi