补: Rest 风格请求处理的的内容补充(1)

Rest风格请求:注意事项和细节

  1. 客户端是PostMan 可以直接发送Put,delete等方式请求,可不设置Filter

  2. 如果哟啊SpringBoot支持页面表达的 Rest 功能,则需要注意如下细节:

  1. Rest 风格请求核心 Filter: HiddenHttpMethodFilter,表单请求会被 HiddenHttpMethodFilter拦截,获取到表单_method的值,再判断PUT/DELETE/PATCH(patch方法是新引入的,是对Put方法的补充,用来对已知资源进行局部更新:) https://segmentfault.com/q/1010000005685904
  2. 如果要SpringBoot 支持页面表单的Rest功能,需要在application.yml 启用 filter功能,否则无效。
  3. 修改application.yml (resources 类路径下) 启用 filter 功能。

spring:
mvc:
hiddenmethod:
filter:
enabled: true # 开启页面表单的rest功能,启用了HiddenHttpMethodFilter,支持rest

Rest的核心过滤器:

  1. 当前的浏览器只支持 post/get请求,因此为了得到 put/delete的请求方式需要提供的 HiddenHttpMethodFilter过滤器进行转换

  2. HiddenHttpMethodFilter : 浏览器 form 表单只支持 get 和 post 请求,而delete,put 等method并不支持,

    spring添加了一个过滤器,可以将这些请求转换为标准的 http 方使得支持get,post,put和delete请求

  3. HiddenHttpMethodFilter 能对 post 请求方式进行转换,因此我们需要特别的注意这一点

  4. 这个过滤器需要在 web.xml 中配置

Spring Boot 开启视图解析器的 yaml 语法

spring:
mvc:
hiddenmethod:
filter:
enabled: true # 开启页面表单的rest功能,启用了HiddenHttpMethodFilter,支持rest
view: # 配置视图解析器
prefix: /rainbowsea/** # 这里是需要注意,如果你配置了 static-path-pattern: /rainbowsea/** 需要保持一致
# prefix: /rainbowsea/ 都行 # 这里是需要注意,如果你配置了 static-path-pattern: /rainbowsea/** 需要保持一致
suffix: .html
static-path-pattern: /rainbowsea/**

我们这里思考一个问题:为什么这里return "hello",返回的是不是字符串,而是转发到对应的资源文件。

package com.rainbowsea.springboot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class HiController { @RequestMapping("/hello")
public String hi(){
return "hi:):)";
} @RequestMapping("/go")
public String go(){
return "hello";
/* return 是先看视图解析器当中是否有 hello.html 页面,没有就在找 controller 控制
是否有处理该请求的,如果两者都没有则报 404错误
*/
} }

注意:我是配置了视图解析器的。

启动 Spring Boot ,打开浏览器输入:http://localhost:8080/go

当 hello.html 静态资源存在时,并没有走 controller

我们将静态文件资源 hello.html 移除,再次访问:http://localhost:8080/go

问题:

我们将静态文件资源 hello.html 移除,再次访问:http://localhost:8080/go

最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

补: Rest 风格请求处理的的内容补充(1)的更多相关文章

  1. python 全栈开发,Day93(vue内容补充,VueX)

    昨日内容回顾 1. 页面的布局 Vue中使用Bootstrap搭页面 1. 安装 1. npm install bootstrap@3.3.7 -S 2. 使用 1. import 'bootstra ...

  2. day10上节内容补充和初始函数

    1.上节内容补充 文件的删除和修改: #文件的删除和修改 #文件中全部都要修改 # with open('歌词',encoding='utf-8') as f1,open('歌词.bak','w',e ...

  3. ASP.NET Core 2.2 WebApi 系列【九】使用SignalR (作者:tenghao510 ) 学习及内容补充

    原文地址:  ASP.NET Core 2.2 WebApi 系列[九]使用SignalR 今天,看到了大牛的这篇博文,  发了一下评论, 我很惊喜, 没想到他很快就回复了我,  而且通过QQ帮助了S ...

  4. git内容补充-Git零基础快速入门-苏玲

    https://git-scm.com/book/zh/v2 git历史 集中式版本控制管理:cvs.svn 分布式版本控制管理:git 基本命令 git config --list --global ...

  5. DOTNET CORE源码分析之IOC容器结果获取内容补充

    补充一下ServiceProvider的内容 可能上一篇文章DOTNET CORE源码分析之IServiceProvider.ServiceProvider.IServiceProviderEngin ...

  6. Django学习路32_创建管理员及内容补充+前面内容复习

    创建管理员 python manage.py createsuperuser   数据库属性命名限制 1.不能是python的保留关键字 2.不允许使用连续的下划线,这是由django的查询方式决定的 ...

  7. CSS应用内容补充及小实例

    一.clear 清除浮动 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  8. 26-[jQuery]-内容补充

    jquery除了咱们上面讲解的常用知识点之外,还有jquery 插件.jqueryUI知识点 jqueryUI 官网: https://jqueryui.com/ jqueryUI 中文网: http ...

  9. jquery内容补充

    jquery除了咱们上面讲解的常用知识点之外,还有jquery 插件.jqueryUI知识点 jqueryUI 官网: https://jqueryui.com/ jqueryUI 中文网: http ...

  10. 数据库 Mysql内容补充一

    mysql时间函数 --获取当前日期 select current_date(); --获取当前时间 select current_time(); --获取当前的日期和时间 select now(); ...

随机推荐

  1. javaweb使用gson工具使浏览器返回json数据

    1.什么是序列化和反序列化 (1)Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程: (2)序列化:对象序列化的最主要的用处就是在传递和保 ...

  2. ERP中内部批号和外部批号分别指的是什么

    在企业资源计划(ERP)系统中,内部批号和外部批号是两个用于标识和跟踪产品的关键概念.它们通常用于管理和追踪生产.库存和供应链中的物料. 内部批号(Internal Batch Number): 定义 ...

  3. 使用 useLazyAsyncData 提升数据加载体验

    title: 使用 useLazyAsyncData 提升数据加载体验 date: 2024/7/19 updated: 2024/7/19 author: cmdragon excerpt: 摘要: ...

  4. Django 自定义装饰器解决MySQL server has gone away错误

    Django 自定义装饰器解决MySQL server has gone away错误 by:授客 QQ:1033553122 测试环境 Win 10   Python 3.5.4   Django- ...

  5. scratch源码下载 | 几何冲刺

    程序说明: <几何冲刺>是一款基于Scratch平台开发的跑酷类游戏程序.在这个游戏中,玩家控制一个黄色的小方块,在快速向前冲刺的过程中躲避各种障碍物.通过按下键盘上的上方向键,玩家可以操 ...

  6. mysql执行步骤口诀:发连缓分析,优化执行器

    mysql执行步骤口诀:发连缓分析,优化执行器 mysql执行步骤: 1.我们在客户端发起一个SQL的查询: 2.连接器判断用户登录以及用户权限: 3.缓存命中,走缓存(mysql缓存不是redis缓 ...

  7. 使用Cython调用CUDA Kernel函数

    技术背景 前面写过一篇关于Cython和C语言混合编程的文章,在Cython中可以使用非常Pythonic的方法去调用C语言中的函数.另外我们也曾在文章中介绍过Python中使用CUDA计算的一种方案 ...

  8. 5、SpringBoot2之整合Durid

    创建名为springboot_druid的新module,过程参考3.1节 5.1.引入相关依赖 注意:虽然本文使用的是 spring boot 2.7.18 和 MySQL 5.7 ,但是出于可移植 ...

  9. 【POI】Excel数据导入

    Postman请求方式: Controller接口代码: /** * /partImport/part/importUpload * @param importFile * @return */ @P ...

  10. 【Binary】XShell6 无法使用的解决办法

    感谢博主的解决方案: https://www.cnblogs.com/pinkpolk/articles/13554445.html 首先需要安装VsCode,并且安装一个[Hex Editor]的插 ...