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

打印 上一主题 下一主题

主题 843|帖子 843|积分 2529

补: 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 功能。

  1. spring:
  2.   mvc:
  3.     hiddenmethod:
  4.       filter:
  5.         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 语法
  1. spring:
  2.   mvc:
  3.     hiddenmethod:
  4.       filter:
  5.         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",返回的是不是字符串,而是转发到对应的资源文件。
  1. package com.rainbowsea.springboot.controller;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. @RestController
  5. public class HiController {
  6.     @RequestMapping("/hello")
  7.     public String hi(){
  8.         return "hi:):)";
  9.     }
  10.     @RequestMapping("/go")
  11.     public String go(){
  12.         return "hello";
  13.         /*
  14.         return 是先看视图解析器当中是否有 hello.html 页面,没有就在找 controller 控制
  15. 是否有处理该请求的,如果两者都没有则报 404错误
  16.          */
  17.     }
  18. }
复制代码

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

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


当 hello.html 静态资源存在时,并没有走 controller
我们将静态文件资源 hello.html 移除,再次访问:http://localhost:8080/go
问题:

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


最后:

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表