当前位置: 首页 > article >正文

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

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

文章目录

  • 一、项目创建流程
    • 1.1 创建项目
    • 1.2 创建资源表示类
    • 1.3 创建资源控制类
  • 二、项目运行
  • 参考资料

一、项目创建流程

本文的目标是构建一个服务,该服务将在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)


http://www.kler.cn/a/148761.html

相关文章:

  • 使用热冻结数据层生命周期优化在 Elastic Cloud 中存储日志的成本
  • 嵌入式硬件实战提升篇(一)-泰山派RK3566制作多功能小手机
  • 用友U8-Cloud uapbd.refdef.query sql注入漏洞复现
  • 传奇996_19——常用函数
  • MySQL与Oracle对比及区别
  • Django基础用法+Demo演示
  • Nginx系列-正向代理和反向代理
  • Vue3+java开发组队功能
  • 【hive-design】hive架构详解:描述了hive架构,hive主要组件的作用、hsql在hive执行过程中的底层细节、hive各组件作用
  • Java中关于ArrayList集合的练习题
  • Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持
  • 【泛型】JAVA基础篇(三)
  • 基于矢量控制的永磁同步电机调速系统
  • 带你用uniapp从零开发一个仿小米商场_5. 公共样式编写,
  • Elasticsearch 线上实战问题及解决方案探讨
  • 八股文面试day6
  • 视频号小店怎么运营?具体操作详解!
  • [MySQL--基础]函数、约束
  • 如何编写自己的python包,并在本地进行使用
  • Python中如何用栈实现队列
  • 1、windows10系统下Qt5.12.0与卸载
  • Unity 关于SpriteRenderer 和正交相机缩放
  • Git 本地服务器搭建 Windows
  • Redis常用操作及应用(二)
  • Nacos2.x配置中心源码分析
  • idea社区版免费下载方式