本文大家继续一起来学习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月17日

热门专题

云南开放大学|云南开放大学报名,云南开放大学报考,云南开放大学,什么是云南开放大学,云南开放大学学历,云南开放大学学费,云南开放大学报名条件,云南开放大学报名时间,云南开放大学学历,云南开放大学专业
云南开放大学
云南综合高中|云南综合高中
云南综合高中
易捷尔高职单招|易捷尔高职单招,易捷尔高职单招培训,单招分数线,单招录取分数线,高职单招学校分数线
易捷尔高职单招
卓越综合高中|卓越综合高中
卓越综合高中
云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司
安徽开放大学|安徽开放大学报名,安徽开放大学报考,安徽开放大学,什么是安徽开放大学,安徽开放大学学历,安徽开放大学学费,安徽开放大学报名条件,安徽开放大学报名时间,安徽开放大学学历,安徽开放大学专业
安徽开放大学
中源管业|中源管业,中源管业公司,中源管业有限公司,中源管业电话,中源管业地址,中源管业电力管,中源管业mpp电力管,中源管业cpvc电力管,中源管业pe穿线管
中源管业
开放大学|开放大学报名,开放大学报考,开放大学,什么是开放大学,开放大学学历,开放大学学费,开放大学报名条件,开放大学报名时间,开放大学学历,开放大学专业
开放大学

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部