Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cfc0be3

Browse files
Merge pull request #446 from bsless/faster-params
Improve performance of params middleware
2 parents 4292f99 + 1147268 commit cfc0be3

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

‎ring-core/src/ring/middleware/params.clj‎

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,33 @@
88
(let [params (codec/form-decode params encoding)]
99
(if (map? params) params {})))
1010

11+
(defn- assoc-param-map [req k v]
12+
(some-> req (assoc k (if-let [v' (req k)]
13+
(reduce-kv assoc v' v)
14+
v))))
15+
1116
(defn assoc-query-params
1217
"Parse and assoc parameters from the query string with the request."
1318
{:added "1.3"}
1419
[request encoding]
15-
(merge-with merge request
16-
(if-let [query-string (:query-string request)]
17-
(let [params (parse-params query-string encoding)]
18-
{:query-params params, :params params})
19-
{:query-params {}, :params {}})))
20+
(let [params (if-let [query-string (:query-string request)]
21+
(parse-params query-string encoding)
22+
{})]
23+
(-> request
24+
(assoc-param-map :query-params params)
25+
(assoc-param-map :params params))))
2026

2127
(defn assoc-form-params
2228
"Parse and assoc parameters from the request body with the request."
2329
{:added "1.2"}
2430
[request encoding]
25-
(merge-with merge request
26-
(if-let [body (and (req/urlencoded-form? request) (:body request))]
27-
(let [params (parse-params (slurp body :encoding encoding) encoding)]
28-
{:form-params params, :params params})
29-
{:form-params {}, :params {}})))
31+
(let [params (if-let [body (and (req/urlencoded-form? request)
32+
(:body request))]
33+
(parse-params (slurp body :encoding encoding) encoding)
34+
{})]
35+
(-> request
36+
(assoc-param-map :form-params params)
37+
(assoc-param-map :params params))))
3038

3139
(defn params-request
3240
"Adds parameters from the query string and the request body to the request

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /