Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
schbrain-parent
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
framework
schbrain-parent
Commits
79bb4a00
Commit
79bb4a00
authored
Sep 05, 2023
by
liaozan
🏀
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Skip wrap request if request is not a application/json post request
parent
6c997c19
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
7 deletions
+12
-7
commons/web-common/src/main/java/com/schbrain/common/web/argument/BodyParamMethodArgumentResolver.java
.../common/web/argument/BodyParamMethodArgumentResolver.java
+2
-3
commons/web-common/src/main/java/com/schbrain/common/web/utils/RequestContentCachingUtils.java
...schbrain/common/web/utils/RequestContentCachingUtils.java
+10
-4
No files found.
commons/web-common/src/main/java/com/schbrain/common/web/argument/BodyParamMethodArgumentResolver.java
View file @
79bb4a00
...
@@ -5,7 +5,6 @@ import com.fasterxml.jackson.databind.JsonNode;
...
@@ -5,7 +5,6 @@ import com.fasterxml.jackson.databind.JsonNode;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.schbrain.common.util.JacksonUtils
;
import
com.schbrain.common.util.JacksonUtils
;
import
com.schbrain.common.web.annotation.BodyParam
;
import
com.schbrain.common.web.annotation.BodyParam
;
import
com.schbrain.common.web.servlet.ContentCachingRequest
;
import
lombok.Setter
;
import
lombok.Setter
;
import
org.springframework.core.MethodParameter
;
import
org.springframework.core.MethodParameter
;
import
org.springframework.util.Assert
;
import
org.springframework.util.Assert
;
...
@@ -68,14 +67,14 @@ public class BodyParamMethodArgumentResolver extends AbstractNamedValueMethodArg
...
@@ -68,14 +67,14 @@ public class BodyParamMethodArgumentResolver extends AbstractNamedValueMethodArg
private
JsonNode
getRequestBody
(
NativeWebRequest
nativeWebRequest
)
throws
IOException
{
private
JsonNode
getRequestBody
(
NativeWebRequest
nativeWebRequest
)
throws
IOException
{
JsonNode
requestBody
=
(
JsonNode
)
nativeWebRequest
.
getAttribute
(
REQUEST_BODY_CACHE
,
SCOPE_REQUEST
);
JsonNode
requestBody
=
(
JsonNode
)
nativeWebRequest
.
getAttribute
(
REQUEST_BODY_CACHE
,
SCOPE_REQUEST
);
if
(
requestBody
==
null
)
{
if
(
requestBody
==
null
)
{
ContentCaching
Request
request
=
wrapRequest
(
nativeWebRequest
);
HttpServlet
Request
request
=
wrapRequest
(
nativeWebRequest
);
requestBody
=
objectMapper
.
readTree
(
request
.
getInputStream
());
requestBody
=
objectMapper
.
readTree
(
request
.
getInputStream
());
nativeWebRequest
.
setAttribute
(
REQUEST_BODY_CACHE
,
requestBody
,
SCOPE_REQUEST
);
nativeWebRequest
.
setAttribute
(
REQUEST_BODY_CACHE
,
requestBody
,
SCOPE_REQUEST
);
}
}
return
requestBody
;
return
requestBody
;
}
}
private
ContentCaching
Request
wrapRequest
(
NativeWebRequest
request
)
{
private
HttpServlet
Request
wrapRequest
(
NativeWebRequest
request
)
{
return
wrapIfRequired
(
request
.
getNativeRequest
(
HttpServletRequest
.
class
));
return
wrapIfRequired
(
request
.
getNativeRequest
(
HttpServletRequest
.
class
));
}
}
...
...
commons/web-common/src/main/java/com/schbrain/common/web/utils/RequestContentCachingUtils.java
View file @
79bb4a00
...
@@ -3,10 +3,13 @@ package com.schbrain.common.web.utils;
...
@@ -3,10 +3,13 @@ package com.schbrain.common.web.utils;
import
com.schbrain.common.util.ValidateUtils
;
import
com.schbrain.common.util.ValidateUtils
;
import
com.schbrain.common.web.servlet.ContentCachingRequest
;
import
com.schbrain.common.web.servlet.ContentCachingRequest
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
javax.annotation.Nullable
;
import
javax.annotation.Nullable
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
static
org
.
springframework
.
http
.
HttpMethod
.
POST
;
import
static
org
.
springframework
.
http
.
MediaType
.
APPLICATION_JSON_VALUE
;
import
static
org
.
springframework
.
web
.
util
.
WebUtils
.
getNativeRequest
;
import
static
org
.
springframework
.
web
.
util
.
WebUtils
.
getNativeRequest
;
/**
/**
...
@@ -19,10 +22,10 @@ public class RequestContentCachingUtils {
...
@@ -19,10 +22,10 @@ public class RequestContentCachingUtils {
/**
/**
* Make request content cacheable to avoid stream closed error after inputStream closed
* Make request content cacheable to avoid stream closed error after inputStream closed
*/
*/
public
static
ContentCaching
Request
wrapIfRequired
(
HttpServletRequest
request
)
{
public
static
HttpServlet
Request
wrapIfRequired
(
HttpServletRequest
request
)
{
ValidateUtils
.
notNull
(
request
,
"request must not be null"
);
ValidateUtils
.
notNull
(
request
,
"request must not be null"
);
if
(
request
instanceof
ContentCachingRequest
)
{
if
(
request
instanceof
ContentCachingRequest
||
!
isJsonPostRequest
(
request
)
)
{
return
(
ContentCachingRequest
)
request
;
return
request
;
}
else
{
}
else
{
return
new
ContentCachingRequest
(
request
);
return
new
ContentCachingRequest
(
request
);
}
}
...
@@ -43,10 +46,13 @@ public class RequestContentCachingUtils {
...
@@ -43,10 +46,13 @@ public class RequestContentCachingUtils {
public
static
String
getRequestBody
(
HttpServletRequest
request
,
String
characterEncoding
)
{
public
static
String
getRequestBody
(
HttpServletRequest
request
,
String
characterEncoding
)
{
ContentCachingRequest
requestToUse
=
getNativeRequest
(
request
,
ContentCachingRequest
.
class
);
ContentCachingRequest
requestToUse
=
getNativeRequest
(
request
,
ContentCachingRequest
.
class
);
if
(
requestToUse
==
null
)
{
if
(
requestToUse
==
null
)
{
log
.
warn
(
"request is not an instance of {}"
,
ContentCachingRequest
.
class
.
getSimpleName
());
return
null
;
return
null
;
}
}
return
requestToUse
.
getContentAsString
(
characterEncoding
);
return
requestToUse
.
getContentAsString
(
characterEncoding
);
}
}
private
static
boolean
isJsonPostRequest
(
HttpServletRequest
request
)
{
return
POST
.
matches
(
request
.
getMethod
())
&&
StringUtils
.
contains
(
request
.
getContentType
(),
APPLICATION_JSON_VALUE
);
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment