Previous: Query string from GET, Up: Query String [Contents]
The query string would be encoded in the HTTP body on the POST method.
There’s only a slight difference when you pass query string by POST instead of with GET: you don’t need a URL rule using a regex, so the "?" is unnecessary here.
(post "/there" #:from-post 'qstr (lambda (rc) (:from-post rc 'get "name")))
Please notice that #:from-post 'qstr is necessary when you’re trying to get data from POST. And you should use :from-post to get related data from query-string.
#:from-post <mode>
The mode includes:
#t or 'qstr: handle query-string for you.
'json: returns a parsed json as hashtable.
'qstr-safe: similar to ’qstr, but try to eliminate evil HTML entities first.
'bv: returns the body as bytevector.
'store rest ...: It’s for Upload files.
The reason to design :from-post is for the efficient purpose. Artanis will not try to auto parse POST body as query-string for at least 2 reasons:
useful to avoid redundant parsing. However, each time you call :from-post, it will parse the query-string again, the correct way to fetch multiple values is:
(:from-post rc 'get-vals "key1" "key2" "key3") ;; For example: ;; let-values is imported from srfi-11 (let-values (((title sub-title old-passwd new-passwd) (:from-post rc 'get-vals "title" "sub-title" "old-passwd" "new-passwd"))) .......... )
BTW, you may get the parsed query-string as an assoc-list as well:
(let ((qstr (:from-post rc 'get))) (assoc-ref qstr "key-1"))