首页 > 其他分享 >springboot2 - 请求相关的兼容配置

springboot2 - 请求相关的兼容配置

时间:2024-05-17 17:34:44浏览次数:19  
标签:console 请求 表单 springboot2 POST 兼容 options DELETE

StandardServletMultipartResolver

StandardServletMultipartResolver 在 spring4 和 spring5 代码是不一样的。

在低版本 spring 环境下,文件只能通过 POST 请求提交。

对程序的影响可能不大,因为现在的做法,基本形成统一的定式:

文件表单和业务表单分离,先将文件上传,返回一段 url,再将 url 加入到业务表单之后提交,

如果采用这种设计,整个应用只需要一个上传接口就够了。

package org.springframework.web.multipart.support;

public class StandardServletMultipartResolver implements MultipartResolver {

    public boolean isMultipart(HttpServletRequest request) {
        if (!"post".equalsIgnoreCase(request.getMethod())) {
            return false;
        } else {
            String contentType = request.getContentType();
            return StringUtils.startsWithIgnoreCase(contentType, "multipart/");
        }
    }
}
package org.springframework.web.multipart.support;

public class StandardServletMultipartResolver implements MultipartResolver {

    @Override
    public boolean isMultipart(HttpServletRequest request) {
        return StringUtils.startsWithIgnoreCase(request.getContentType(), "multipart/");
    }
}

HiddenHttpMethodFilter

引入 Restful 概念之后,多出了一些请求方式:PUT、DELETE。

Restful 毕竟是新的概念,不是任何场景,都能成功提交 PUT、DELETE 请求。

如果出现不兼容,就可以启用 HiddenHttpMethodFilter。

提交表单的时候,在表单中增加一个参数,name 是 _method,value 就是你所需要的请求方式,
表单仍然以 POST 方式提交,到后台之后,程序会自动将请求方式转换成你指定的方式。

启用方式如下:

spring:
  # 启用 HiddenHttpMethodFilter,允许以 POST 的方式提交 PUT、DELETE 等类型请求
  mvc:
    hiddenmethod:
      filter:
        enabled: true

比如:通过表单提交一个 DELETE 请求:

<!-- 表单实际是以 POST 请求方式提交 -->
<form target="_blank" method="post">
  <input type="number" name="id" value="1">
  <!-- 增加一个字段,声明本次请求方式 -->
  <input type="hidden" name="_method" value="DELETE">
</form>

也可以对 ajax 进行二次封装:

// jQuery环境下纪念款程序代码
function ajax(options) {
    if (options.type === "PUT") {
        options.data._method = "PUT";
    } else if (options.type === "DELETE") {
        options.data._method = "DELETE";
        options.type = "POST";
    } else if (options.type === "POST") {
        options.data._method = "POST";
    } else if (options.type === "GET") {
        options.data._method = "GET";
    }
    let layer_load_index = layer.load();

    return new Promise((resolve, reject) => {
        jQuery.ajax(
            options
        ).always(function () {
            layer.close(layer_load_index);
        }).fail(function (xhr, status, err) {
            console.error(xhr.responseText);
            console.error(xhr.status);
            console.error(xhr.readyState);
            console.error(xhr.statusText);
            console.error(status);
            reject(err);
        }).done(function (result) {
            resolve(result);
        });
    });
}

标签:console,请求,表单,springboot2,POST,兼容,options,DELETE
From: https://www.cnblogs.com/chenss15060100790/p/18198158

相关文章

  • aiohttp初识(请求&响应)
    aiohttp初识(请求&响应)  aiohttp(用于asyncio和Python的异步HTTP客户端/服务器)初识1|0aiohttp客户端使用用于asyncio和Python的异步HTTP客户端/服务器:AsynchronousHTTPClient/ServerforasyncioandPython.1|1发起请求让我们从导入aiohttp模块开始:importai......
  • 配置所需的各种信息(Nvidia对应Cuda,显卡等兼容信息)
    nvidia各型号显卡算力、CUDA、cuDNN、驱动对应版本表1:显卡型号信息表2:CUDA工具包和CUDA最小版本兼容性所需的最低驱动程序版本GeForceRTX3090显卡仅支持CUDA11以上的版本。且Pytorch1.7.0开始支持CUDA11......
  • 彻底解决 node node-sass sass-loader版本兼容问题
    原文地址https://www.cnblogs.com/easy1996/p/17945874直接放弃node-sass,使用dart-sass无缝替换。node-sass与dart-sass区别:node-sass是用node(调用cpp编写的libsass)来编译sass。dart-sass是用dratVM来编译sass。node-sass是实时自动编译的,dart-sass需要保......
  • 源服务器开启gzip,CDN上没开启,CDN节点请求是以gzip大小算还是按原来的大小算
    今天学到一个知识:当源服务器开启了gzip压缩,而CDN上没有开启gzip时,CDN节点请求的流量计算通常是基于未压缩的原始文件大小来计算的。这是因为CDN通常是根据其接收到的内容来计算流量,而不会主动去解压缩已压缩的内容来计算。具体来说,当CDN节点从源服务器获取内容时,如果源服务器返......
  • url并发请求
    functionbatchRequest(urls,maxNum){returnnewPromise(resolve=>{if(urls.length===0){resolve([]);return;}constresults=[];letindex=0;letfinishCount=0;asyncfunction......
  • lightdb mysql 8.0兼容之不可见主键
    数据库设计通常需要满足一定的范式要求,其中主键更是最基本的要求。不过,数据库管理系统却允许我们创建没有主键的表。这样的表在数据库中会带来查询性能低下、复制延迟甚至无法实现高可用配置等问题。为此,lightdb在22.1版本引入了一个新的功能,叫做不可见主键(GeneratedInv......
  • 5款兼容Linux系统的国产软件,支持内网使用,满足信创用户办公需求
    随着信息技术应用创新(信创)的推进,对国产软件的需求日益增长,尤其是在保障信息安全和提升办公效率方面。Linux系统因其开源和安全性特点,受到了许多政企的青睐。今天给大家分享5款兼容Linux系统的国产软件,它们不仅支持内网使用,而且能够满足信创用户的办公需求。 01、永中文档 永......
  • drf之请求和响应
    drf之请求和响应一、drf之请求【1】源码分析#Request类的对象fromrest_framework.requestimportRequest#1新的request#2request.data前端传入的请求体中得数据,无论那种编码#3用起来跟之前一样#4老的request在request._request【2】配置视图类能处理的编......
  • 03请求数据封装request、版本管理
    请求数据封装request、版本管理一、请求数据再封装以前我们通过django开发项目时,视图中的request是django.core.handlers.wsgi.WSGIRequest类的对象,其中包含了请求相关的所有数据。而在使用drf框架时,视图中的request是rest_framework.request.Request类的对象,其是又对dja......
  • H5 的兼容性处理
    添加辕信息,让浏览器处于最优渲染1)设置IE总是使用最新的文档模式进行渲染<metahttp-equiv="X-UA-Compatible"content="IE-Edge">2)优先使用webkit(chromeium)内核进行渲染,针对360等浏览器使用html5shiv让低版本的浏览器认识H5的语义化标签<!--[ifltie9]><.scripts><![......