当前位置: 首页 > 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/news/148761.html

相关文章:

  • 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社区版免费下载方式
  • leetCode 100. 相同的树 和 leetCode 101. 对称二叉树 和 110. 平衡二叉树 和 199. 二叉树的右视图
  • 【Kotlin】高阶函数和Lambda
  • GitLab 登录中,LDAP和 Standard 验证有什么区别
  • C++:C++11新特性---右值引用
  • Notion for Mac:打造您的专属多功能办公笔记软件
  • 小狐狸ChatGPT付费创作系统V2.3.4独立版 +WEB端+ H5端最新去弹窗授权
  • 【开题报告】基于uniapp的瑜伽学习交流小程序的设计与实现
  • 近五年—中国十大科技进展(2018年—2022年)
  • Spring Cloud 版本升级记:OpenFeignClient与Gateway的爱恨交织
  • 【C++ Primer Plus学习记录】while循环