Spring Data Rest 支持Put请求

  最近在用 Spring Data Rest 写WebApi 遇到Put请求后报415 Mieda Type 的错误,GG了下 找到个解决办法,下面是针对Put请求的过滤。


1 public class HttpPutRestfulContentFilter extends OncePerRequestFilter {
2
3 private Charset charset = Charset.forName("UTF-8");
4 private final String method="PUT";
5
6 @Override
7 protected void doFilterInternal(final HttpServletRequest request, HttpServletResponse response,
8 FilterChain filterChain) throws ServletException, IOException {
9
10 if (this.method.equals(request.getMethod())) {
11 HttpInputMessage inputMessage = new ServletServerHttpRequest(request) {
12 @Override
13 public InputStream getBody() throws IOException {
14 return request.getInputStream();
15 }
16 };
17
18 HttpServletRequest wrapper = new HttpMethodRequestWrapper(request, this.method);
19 filterChain.doFilter(wrapper, response);
20 }
21 else {
22 filterChain.doFilter(request, response);
23 }
24 }
25
26 private static class HttpMethodRequestWrapper extends HttpServletRequestWrapper {
27
28 private final String method;
29
30 public HttpMethodRequestWrapper(HttpServletRequest request, String method) {
31 super(request);
32 this.method = method;
33 }
34
35 @Override
36 public String getMethod() {
37 return this.method;
38 }
39 }
40 }

  需要在web.xml中添加这个自定义过滤


 <!--解决使用PUT请求接收不到参数的问题 -->
<filter>
<filter-name>HttpMethodFilter</filter-name>
<filter-class>org.tccsdk.core.code.filter.HttpPutRestfulContentFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>HttpMethodFilter</filter-name>
<servlet-name>api</servlet-name>
</filter-mapping>

<!-- Spring child -->
<servlet>
<servlet-name>api</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>api</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

Spring Data Rest 支持Put请求

时间: 2024-08-04 19:51:09

Spring Data Rest 支持Put请求的相关文章

扩展Spring Data QBE支持范围查询

Spring Data JPA提供了Query by Example (QBE) 查询技术,实现了动态条件查询,不必再写烦琐的条件判断.但QBE不支持范围查询,本文结合QBE和Specification实现了动态范围查询. 本文以汪云飞-Spring Data JPA实现动态条件与范围查询实例代码为基础修改,利用org.springframework.data.domain.Range替换了自定义实现,支持Matching Any,保持了原代码的基本结构. 实现代码 FieldRange imp

初入spring boot(八 )Spring Data REST

1. 什么是Spring Data REST Spring Data JPA是基于Spring Data 的Repository之上,可以将Repository自动输出为REST资源.目前Spring Data REST支持将Spring Data JPA.Spring Data MongoDB.Spring Data Neo4j.Spring Data Gemfire以及Spring Data Cassandra的Repository自动转换成REST服务. 2. Spring mvc中配置使

深入浅出学Spring Data JPA

第一章:Spring Data JPA入门   Spring Data是什么 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务. Spring Data 包含多个子项目: Commons - 提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化 JPA - 简化创建 JPA 数据访问层和跨存储的持久层功能 Hadoop - 基于 Spring 的 Hadoop 作业配置和一个 P

Spring Boot教程35——Spring Data JPA

Hibernate是数据访问解决技术的绝对霸主.JPA是由Hibernate主导的一个基于O/R映射的标准规范.O/R映射即将领域模型类和数据库的表进行映射,通过程序操作对象而实现表数据操作的能力,让数据访问操作无须关注数据库相关的技术. Spring Data JPA介绍 1.定义数据访问层 使用Spring Data JPA建立数据访问层十分简单,只需定义一个继承JpaRepository的接口即可: public interface PersonRepository extends Jpa

Spring Data Redis学习

本文是从为知笔记上复制过来的,懒得调整格式了,为知笔记版本是带格式的.点这里 为知笔记版本 Spring Data Redis 学习 Version 1.8.4.Release 前言 1.新功能 1.1.Spring Data Redis 1.8 新特性 1.2.Spring Data Redis 1.7 新特性 1.3.Spring Data Redis 1.6 新特性 1.4.Spring Data Redis 1.5 新特性 介绍 2.为什么选择Spring Data Redis? 3.要

初入spring boot(五 )Spring Data JPA

Spring Data JPA通过提供基于JPA的Repository极大地减少JPA作为数据访问方案的代码量. 1.定义数据访问层 使用Spring Data JPA建立数据访问层十分简单,只需定义一个继承JpaRepository的接口即可,接口如下: 1 @RepositoryRestResource(path = "people") 2 public interface PersonRepository extends JpaRepository<Person, Long

深入浅出学Spring Data JPA toPredicate Predicate[] p = new Predicate[list.size()]; query.where(cb.and

序言自工作以来,除了以前比较流量的hibernate,就是一直使用ORM 规范 JPA了.而这几天工作需要,研究了下JPA的标准查询,名为:JPA criteria查询.相比JPQL,其优势是类型安全,更加的面向对象.使用标准查询,开发人员可在编译的时候就检查查询的正确与否.而以前也只是在Hibernate中听说有过.具体不详,没用过.JPA元模型概念,及使用在JPA中,标准查询是以元模型的概念为基础的.元模型是为具体持久化单元的受管实体定义的.这些实体可以是实体类,嵌入类或者映射的父类.提供受

Spring data Jpa,Mybatis,读写锁,@Lock 使用

Spring data jpa 支持注解式的读写锁(悲观锁),实际上这个东西硬编码也简单,但是基于Jpa 命名方式定义的Sql,只能用注解添加支持读写锁了, 不了解读写锁的可以点这里 mysql读写锁及事务 并且推荐 PESSIMISTIC_READ,PESSIMISTIC_WRITE,而不是 READ,WRITE,但是官方文档貌似没有更新这个案例,踩了一些坑. 新建一个实体Book.java /** * User: laizhenwei * Date: 2018-04-18 Time: 9:0

Spring Data学习中心

Spring Data 概览 Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性. 它使数据访问技术,关系数据库和非关系数据库,map-reduce框架和基于云的数据服务变得简单易用. 这是一个伞形项目,其中包含许多特定于给定数据库的子项目. 这些项目是通过与这些激动人心的技术背后的许多公司和开发人员合作开发的. ----------- 星云解读: 众所周知,数据库大体上可以分为关系型数据库和非关系型数据库. 数据库种类繁多,为了