补: Rest 风格请求处理的的内容补充(1)
补: Rest 风格请求处理的的内容补充(1)
Rest风格请求:注意事项和细节
客户端是PostMan 可以直接发送Put,delete等方式请求,可不设置Filter
如果哟啊SpringBoot支持页面表达的 Rest 功能,则需要注意如下细节:
- Rest 风格请求核心 Filter: HiddenHttpMethodFilter,表单请求会被 HiddenHttpMethodFilter拦截,获取到表单_method的值,再判断PUT/DELETE/PATCH(patch方法是新引入的,是对Put方法的补充,用来对已知资源进行局部更新:) https://segmentfault.com/q/1010000005685904
- 如果要SpringBoot 支持页面表单的Rest功能,需要在application.yml 启用 filter功能,否则无效。
- 修改application.yml (resources 类路径下) 启用 filter 功能。
spring:
mvc:
hiddenmethod:
filter:
enabled: true # 开启页面表单的rest功能,启用了HiddenHttpMethodFilter,支持rest
Rest的核心过滤器:
当前的浏览器只支持 post/get请求,因此为了得到 put/delete的请求方式需要提供的 HiddenHttpMethodFilter过滤器进行转换
HiddenHttpMethodFilter : 浏览器 form 表单只支持 get 和 post 请求,而delete,put 等method并不支持,
spring添加了一个过滤器,可以将这些请求转换为标准的 http 方使得支持get,post,put和delete请求HiddenHttpMethodFilter 能对 post 请求方式进行转换,因此我们需要特别的注意这一点
这个过滤器需要在 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)的更多相关文章
- python 全栈开发,Day93(vue内容补充,VueX)
昨日内容回顾 1. 页面的布局 Vue中使用Bootstrap搭页面 1. 安装 1. npm install bootstrap@3.3.7 -S 2. 使用 1. import 'bootstra ...
- day10上节内容补充和初始函数
1.上节内容补充 文件的删除和修改: #文件的删除和修改 #文件中全部都要修改 # with open('歌词',encoding='utf-8') as f1,open('歌词.bak','w',e ...
- ASP.NET Core 2.2 WebApi 系列【九】使用SignalR (作者:tenghao510 ) 学习及内容补充
原文地址: ASP.NET Core 2.2 WebApi 系列[九]使用SignalR 今天,看到了大牛的这篇博文, 发了一下评论, 我很惊喜, 没想到他很快就回复了我, 而且通过QQ帮助了S ...
- git内容补充-Git零基础快速入门-苏玲
https://git-scm.com/book/zh/v2 git历史 集中式版本控制管理:cvs.svn 分布式版本控制管理:git 基本命令 git config --list --global ...
- DOTNET CORE源码分析之IOC容器结果获取内容补充
补充一下ServiceProvider的内容 可能上一篇文章DOTNET CORE源码分析之IServiceProvider.ServiceProvider.IServiceProviderEngin ...
- Django学习路32_创建管理员及内容补充+前面内容复习
创建管理员 python manage.py createsuperuser 数据库属性命名限制 1.不能是python的保留关键字 2.不允许使用连续的下划线,这是由django的查询方式决定的 ...
- CSS应用内容补充及小实例
一.clear 清除浮动 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- 26-[jQuery]-内容补充
jquery除了咱们上面讲解的常用知识点之外,还有jquery 插件.jqueryUI知识点 jqueryUI 官网: https://jqueryui.com/ jqueryUI 中文网: http ...
- jquery内容补充
jquery除了咱们上面讲解的常用知识点之外,还有jquery 插件.jqueryUI知识点 jqueryUI 官网: https://jqueryui.com/ jqueryUI 中文网: http ...
- 数据库 Mysql内容补充一
mysql时间函数 --获取当前日期 select current_date(); --获取当前时间 select current_time(); --获取当前的日期和时间 select now(); ...
随机推荐
- Docker自定义网段实现容器间的互访【开发环境中】
我们都知道docker容器之间是互相隔离的,不能互相访问,但如果有些依赖关系的服务要怎么办呢,所以自定义网段实现容器间的互访. Docker 安装好之后默认会创建三个虚拟网卡,可以使用 docker ...
- 解决方案 | Python中安装pix2tex latex ocr出现报错Cannot mix incompatible Qt library (6.6.2) with this library (6.7.2)
一.问题 Python中安装pix2tex latex ocr出现报错Cannot mix incompatible Qt library (6.6.2) with this library (6.7 ...
- web259(超详细)
SoapClient看完之后还不是很懂的话就可以去下面的两个网址去补充一下 SoapClient 是 PHP 中用于与 SOAP(Simple Object Access Protocol)服务进行通 ...
- 阅读翻译Mathematics for Machine Learning之2.6 Generating Set and Basis
阅读翻译Mathematics for Machine Learning之2.6 Generating Set and Basis 关于: 首次发表日期:2024-07-19 Mathematics ...
- pytest + allure2.x 踩坑-报告无数据
我按照网上的教程,在用pytest生成完allure可以使用的json数据之后,然后再用allure生成报告,打开,发现我生成的报告中没有数据显示. 1.首先我用pytest生成数据是没有问题的 2. ...
- RIME:用交叉熵 loss 大小分辨 preference 是否正确 + 内在奖励预训练 reward model
文章题目:RIME: Robust Preference-based Reinforcement Learning with Noisy Preferences,ICML 2024 Spotlight ...
- Django模型中的save方法 精讲
两种方法定义在Django模型中的save方法有不同的参数处理方式. 第一种方法: def save(self, *args, **kwargs): super().save(*args, **kwa ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-60 - 判断元素是否显示 - 下篇
1.简介 有些页面元素的生命周期如同流星一闪,昙花一现.我们也不知道这个元素在没在页面中出现过,为了捕获这一美好瞬间,让其成为永恒.我们就来判断元素是否显示出现过. 在操作元素之前,可以先判断元素的状 ...
- 【JS】06 语法补充
严格模式(use strict) 其实就是就是对JS随意的语法做一个强制规范要求 开启严格模式: "use strict"; 注意,只有在第一行声明才会有效,. 否则在严格模式之前 ...
- 【Vue】Re09 Webpack 第一部分(介绍、安装、配置)
一.Webpack的用途 webpack要解决的是统一网页资源的问题 前端工程化出现了很多问题,就是兼容性,浏览器所不能解析 所以需要一个打包,转换等方式处理 二.安装描述介绍 下载安装NodeJS, ...

