本文大家继续一起来学习RESTful Web。大家在上一讲已经了解了如何设置项目和构建系统,现在大家可以创建基于RESTful的Web服务了。

关于RESTful的介绍大家可以点击:

实现Python、Java 在线编译(无需任何环境)以及学习教程~

该服务将在后端处理路由为” /greet“的 GET 请求,并且可以在访问请求中携带参数。GET 请求成功后应返回 200 OK 响应,并在前端输出以下内容:

{

    "id": 1,2,3..,

    "content": "Hello, World!"

}

效果如下图所示:

一、请求建模

如上图,id 字段是请求的编号,每次递增,内容是请求内容的文本。大家要对请求进行建模,需要创建一个类Greet对请求进行包装。类Greet其中包含 id 和内容数据的字段、构造函数和访问器,如以下代码所示:

package com.example.demo;

public class Greet {

        private final long id;

        private final String content;

        //构造函数

        public Greet(long id, String content) {

            this.id = id;

            this.content = content;

        }

        public long getId() {

            return id;

        }

        public String getContent() {

            return content;

        }

}

二、创建资源控制器

在 Springboot构建 RESTful Web 服务的方法中,HTTP 请求由控制器处理。这些组件由@RestController注释标识,资源控制器类GreetControl通过返回类Greet的新实例来处理 /greeting 的 GET 请求:

package com.example.demo;

import java.util.concurrent.atomic.AtomicLong;

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

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

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

@RestController

public class GreetControl {

        private static final String template = "Hello, %s!";

        private final AtomicLong counter = new AtomicLong();

        @GetMapping("/greet")

        public Greet greet(@RequestParam(value = "name", defaultValue = "World") String name) {

            return new Greet(counter.incrementAndGet(), String.format(template, name));

        }

    }

这个控制器看似简洁明了,但其实背后强大的Sprintboot帮大家做了很多事情。

@GetMapping 注释确保对 /greet 的 HTTP GET 请求映射到 greet()方法。

@RequestParam将查询字符串参数名称的值绑定到greet()方法的名称参数中。如果请求中没有 name 参数,则使用"World"作为默认值。

方法实现创建并返回一个Greet类的对象,该对象具有基于计数器的下一个值的 id 和 content 属性,并使用模板进行格式化。

传统MVC控制器和RESTful Web服务控制器之间的主要区别在于创建HTTP响应主体的方式。RESTful Web 服务控制器并不依赖于视图技术将内容在服务器端呈现为 HTML,而是填充并返回一个 Greet对象。对象数据将作为JSON 直接写入 HTTP 响应。

此代码使用 Spring @RestController装饰,它将被装饰的类标记为控制器,

Greet对象必须转换为 JSON。由于Spring的HTTP消息转换器会自动选择 Spring 的 MappingJackson2HttpMessageConverter 将 Greeting 实例转换为 JSON,大家无需手动进行此转换。

如果请求中没有 name 参数,则会使用"World"作为默认值。

如果使用?name=bingyan进行参数传递,则前端”Hello,“后面显示输出变为:

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月30日

热门专题

大理科技管理学校|大理科技管理学校,大理科技,大理科技中等职业技术学校,大理科技管理中等职业技术学校,大理科技学校
大理科技管理学校
APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
国家开放大学|国家开放大学报名,国家开放大学报考,国家开放大学,什么是国家开放大学,国家开放大学学历,国家开放大学学费,国家开放大学报名条件,国家开放大学报名时间,国家开放大学学历,国家开放大学专业
国家开放大学
昆明综合高中|昆明综合高中
昆明综合高中
一年制中专|中专学历,中专是什么学历,中专是什么,中专有什么专业,中专升大专,一年制中专
一年制中专
天麻的功效与作用吃法|天麻的功效与作用,天麻的功效与作用吃法,天麻炖什么治头痛最好,天麻的功效与作用禁忌,天麻多少钱一斤,天麻的功效与作用吃法及禁忌,天麻怎么吃效果最好,天麻粉的功效与作用,天麻怎么吃
天麻的功效与作用吃法
云南网站建设|云南网站制作,网站建设,云南网站开发,云南网站设计,云南网页设计,云南网站建设公司,云南网站建设
云南网站建设
云南高职单招|云南单招,云南单招网,云南高职单招网,云南高职单招,云南单招学校,云南单招培训
云南高职单招

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部