Springboot mvc开发之Rest风格及RESTful简化开发案例

简介: Springboot mvc开发之Rest风格及RESTful简化开发案例

REST开发

这个内容对以后开发中很重要吧

这个知识点有点欠缺

我们这边是一个知识加油站

是隶属于springboot mvc的一个小的细节

互联网上

风格简洁

Rest

是表现形式状态转换

访问网络资源的状态格式

传统风格是通过访问路径的方式实现在网页中的操作

也很少有这个课程

Rest风格描述形式简洁许多

我要访问user这个资源 id是1

我要访问user这个资源

所有的数据通过post提交的话

我们在外面是看不到数据的

我们通过调用行为进行区分

访问资源时有不同的行为动作

按照REST风格访问资源时使用行为动作区分对资源进行的何种操作

我们在postman中请求的方式有很多

我们通过一个路径和一个访问方式我们就可以确定一个资源的访问形式

REST只是一个风格

RESTFUL RESTful

只是一个建议 可以打破的

一种可以改变的思想

话没说的太满...

这个风格使用频率很高 从今往后 基本上都用这种风格进行开发

入门案例

我们先前的程序

package com.bigdata1421.demo.controller;
 
import com.bigdata1421.demo.demos.web.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
@Controller
public class UserController {
    /*
     * @ResponseBody注解是Spring框架中的一个注解,
     * 它用于标记在控制器方法上,
     * 表示该方法返回的对象将直接作为HTTP响应体返回给客户端,
     * 而不会经过视图解析器进行解析。
     * 通常用于RESTful风格的接口开发。
     * */
    @RequestMapping("/save")
    @ResponseBody
    public String save(@RequestBody User user){
        System.out.println("user save ... " + user);
        return "{'module':'user save'}";
    }
 
    @RequestMapping("/delete")
    @ResponseBody
    public String delete(Integer id){
        System.out.println("user delete ... " + id);
        return "{'module':'user delete'}";
    }
    /*
    * @RequestBody注解是Spring框架中的一个注解,
    * 它用于标记在控制器方法的参数上,
    * 表示该参数的值将从请求体中获取。
    * 通常在处理POST请求或PUT请求时,
    * 客户端会将请求数据以请求体的形式发送给服务器。
    * 而使用@RequestBody注解可以将请求体中的数据绑定到控制器方法的参数上,
    * 方便进行进一步的处理或者验证。
    * */
    @RequestMapping("/update")
    @ResponseBody
    public String update(@RequestBody User user){
        System.out.println("user update ... " + user);
        return "{'module':'user update'}";
    }
 
    @RequestMapping("/getById")
    @ResponseBody
    public String update(Integer id){
        System.out.println("user getById ... " + id);
        return "{'module':'user getById'}";
    }
}

视图解析器(View Resolver)是Spring框架中的一个组件,它主要用于将控制器方法返回的逻辑视图名解析为具体的视图对象。

在Spring MVC中,控制器方法通常返回一个字符串作为逻辑视图名,而不是直接返回一个视图对象。这个逻辑视图名表示了一个视图的标识符,通过视图解析器将其解析成一个具体的视图对象,最终呈现给用户。

视图解析器根据配置的规则和约定来查找和解析视图对象。它可以根据视图名称从不同的位置(如文件系统、类路径、数据库等)查找视图文件,并将其转换为对应的视图对象。一旦找到了相应的视图对象,就可以使用它来渲染并生成最终的响应。

@ResponseBody注解是Spring框架中的一个注解,它用于标记在控制器方法上,表示该方法返回的对象将直接作为HTTP响应体返回给客户端,而不会经过视图解析器进行解析。通常用于RESTful风格的接口开发。

使用@ResponseBody注解时,Spring会根据返回值的类型自动选择对应的HttpMessageConverter进行序列化处理。常见的HttpMessageConverter包括:MappingJackson2HttpMessageConverter(用于处理JSON格式)、StringHttpMessageConverter(用于处理字符串)、ByteArrayHttpMessageConverter(用于处理字节数组)等。

@RequestBody注解是Spring框架中的一个注解,它用于标记在控制器方法的参数上,表示该参数的值将从请求体中获取。

通常在处理POST请求或PUT请求时,客户端会将请求数据以请求体的形式发送给服务器。而使用@RequestBody注解可以将请求体中的数据绑定到控制器方法的参数上,方便进行进一步的处理或者验证。

我们通过postman向网站发起请求

之后获取了反馈

接下来我们改成Rest风格的

如果使用get请求提交是会报错的 提示不支持这种请求方式

控制台有反馈

全部改写

我们如果要传参可以通过路径变量的注解实现

{id}表示形参 @PathVariable 代表从路径里面取值

这两个是一对

在postman里发起DELETE请求就能获取响应结果

控制台也能反馈

前端应该发送的是json格式的数据

@responseBody注解将json转为了Javabean对象

package com.bigdata1421.demo.controller;
 
import com.bigdata1421.demo.demos.web.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
 
@Controller
public class UserController {
 
    @RequestMapping(value = "/users",method = RequestMethod.POST)
    @ResponseBody
    public String save(){
        System.out.println("user save ... ");
        return "{'module':'user save'}";
    }
 
    @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable Integer id){
        System.out.println("user delete ... " + id);
        return "{'module':'user delete'}";
    }
 
    @RequestMapping(value = "/users" ,method = RequestMethod.PUT)
    @ResponseBody
    public String update(@PathVariable User user){
        System.out.println("user update ... " + user);
        return "{'module':'user update'}";
    }
 
    @RequestMapping(value = "/users{id}",method = RequestMethod.GET)
    @ResponseBody
    public String update(@PathVariable Integer id){
        System.out.println("user getById ... " + id);
        return "{'module':'user getById'}";
    }
}

小结

根据请求行为去指定书写

请求的参数如果有路径变量

路径上有参数的占位 在形参上用注解的方式对应上

学到这里

后期大量的时间里

我们都会将数据封装成pojo然后通过字符串的方式

传递过去

RESTful简化开发

入门案例过于繁琐 可以简化

重复大量写的东西可以简化书写

设置统一请求路径

把ResponseBody注解提上去

整合注解

指定请求类型的注解

标准请求动作映射(4种)

这样就能简写

快速以RESTful风格开发

package com.bigdata1421.demo.controller;
 
import com.bigdata1421.demo.demos.web.User;
import org.springframework.web.bind.annotation.*;
 
@RestController
@RequestMapping("/users")
public class UserController {
 
   @PostMapping
    public String save(){
        System.out.println("user save ... ");
        return "{'module':'user save'}";
    }
 
    @DeleteMapping("/{id}")
    public String delete(@PathVariable Integer id){
        System.out.println("user delete ... " + id);
        return "{'module':'user delete'}";
    }
 
    @PutMapping
    public String update(@PathVariable User user){
        System.out.println("user update ... " + user);
        return "{'module':'user update'}";
    }
 
    @GetMapping ("/{id}")
    public String update(@PathVariable Integer id){
        System.out.println("user getById ... " + id);
        return "{'module':'user getById'}";
    }
}

小结

目录
相关文章
|
20天前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
8月前
|
前端开发 Java 测试技术
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
本文介绍了 `@RequestParam` 注解的使用方法及其与 `@PathVariable` 的区别。`@RequestParam` 用于从请求中获取参数值(如 GET 请求的 URL 参数或 POST 请求的表单数据),而 `@PathVariable` 用于从 URL 模板中提取参数。文章通过示例代码详细说明了 `@RequestParam` 的常用属性,如 `required` 和 `defaultValue`,并展示了如何用实体类封装大量表单参数以简化处理流程。最后,结合 Postman 测试工具验证了接口的功能。
429 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
|
8月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
657 0
|
8月前
|
前端开发 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@PathVariable
`@PathVariable` 是 Spring Boot 中用于从 URL 中提取参数的注解,支持 RESTful 风格接口开发。例如,通过 `@GetMapping("/user/{id}")` 可以将 URL 中的 `{id}` 参数自动映射到方法参数中。若参数名不一致,可通过 `@PathVariable("自定义名")` 指定绑定关系。此外,还支持多参数占位符,如 `/user/{id}/{name}`,分别映射到方法中的多个参数。运行项目后,访问指定 URL 即可验证参数是否正确接收。
416 0
|
8月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestMapping
@RequestMapping 是 Spring MVC 中用于请求地址映射的注解,可作用于类或方法上。类级别定义控制器父路径,方法级别进一步指定处理逻辑。常用属性包括 value(请求地址)、method(请求类型,如 GET/POST 等,默认 GET)和 produces(返回内容类型)。例如:`@RequestMapping(value = "/test", produces = "application/json; charset=UTF-8")`。此外,针对不同请求方式还有简化注解,如 @GetMapping、@PostMapping 等。
370 0
|
8月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RestController
本文主要介绍 Spring Boot 中 MVC 开发常用的几个注解及其使用方式,包括 `@RestController`、`@RequestMapping`、`@PathVariable`、`@RequestParam` 和 `@RequestBody`。其中重点讲解了 `@RestController` 注解的构成与特点:它是 `@Controller` 和 `@ResponseBody` 的结合体,适用于返回 JSON 数据的场景。文章还指出,在需要模板渲染(如 Thymeleaf)而非前后端分离的情况下,应使用 `@Controller` 而非 `@RestController`
271 0
|
4月前
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
216 0
|
12月前
|
JSON API 数据格式
探索后端开发:从零构建简易RESTful API
在数字时代的浪潮中,后端开发如同搭建一座桥梁,连接着用户界面与数据世界。本文将引导读者步入后端开发的殿堂,通过构建一个简易的RESTful API,揭示其背后的逻辑与魅力。我们将从基础概念出发,逐步深入到实际操作,不仅分享代码示例,更探讨如何思考和解决问题,让每一位读者都能在后端开发的道路上迈出坚实的一步。
|
12月前
|
安全 测试技术 API
构建高效RESTful API:后端开发的艺术与实践####
在现代软件开发的浩瀚星空中,RESTful API如同一座桥梁,连接着前端世界的绚丽多彩与后端逻辑的深邃复杂。本文旨在探讨如何精心打造一款既高效又易于维护的RESTful API,通过深入浅出的方式,剖析其设计原则、实现技巧及最佳实践,为后端开发者提供一份实用的指南。我们不深入晦涩的理论,只聚焦于那些能够即刻提升API品质与开发效率的关键点,让你的API在众多服务中脱颖而出。 ####
121 0
|
Dubbo Java 应用服务中间件
SpringBoot开发案例之整合Dubbo消费者
有人卖就有人买,显然是亘古不变的真理,前两篇讲解了SpringBoot+Dubbo的提供者的几种暴露方式,这篇跟大家分享一下消费者如何去订阅属于自己的服务。 相信,下图大家一定不陌生吧:注册中心,消费者,容器(提供者),监控中心。
9631 0

热门文章

最新文章