Exposing redirect-to arg in redirect/get*
This commit is contained in:
parent
6e1e6660c4
commit
22b39b44d1
|
@ -5,6 +5,7 @@
|
|||
@(require (for-label web-server/servlet/web
|
||||
web-server/servlet/servlet-structs
|
||||
web-server/http
|
||||
racket/list
|
||||
net/url))
|
||||
|
||||
@defmodule[web-server/servlet/web]{The
|
||||
|
@ -141,17 +142,17 @@ functions of interest for the servlet developer.
|
|||
]
|
||||
}
|
||||
|
||||
@defproc[(redirect/get)
|
||||
@defproc[(redirect/get [#:headers hs (listof header?) empty])
|
||||
request?]{
|
||||
Calls @racket[send/suspend] with @racket[redirect-to].
|
||||
Calls @racket[send/suspend] with @racket[redirect-to], passing @racket[hs] as the headers.
|
||||
|
||||
This implements the Post-Redirect-Get pattern.
|
||||
Use this to prevent the @onscreen["Refresh"] button from duplicating effects, such as adding items to a database.
|
||||
}
|
||||
|
||||
@defproc[(redirect/get/forget)
|
||||
@defproc[(redirect/get/forget [#:headers hs (listof header?) empty])
|
||||
request?]{
|
||||
Calls @racket[send/forward] with @racket[redirect-to].
|
||||
Calls @racket[send/forward] with @racket[redirect-to], passing @racket[hs] as the headers.
|
||||
}
|
||||
|
||||
@defthing[current-servlet-continuation-expiration-handler (parameter/c expiration-handler/c)]{
|
||||
|
|
|
@ -36,8 +36,8 @@
|
|||
|
||||
(provide/contract
|
||||
[current-servlet-continuation-expiration-handler (parameter/c expiration-handler/c)]
|
||||
[redirect/get (-> request?)]
|
||||
[redirect/get/forget (-> request?)]
|
||||
[redirect/get (() (#:headers (listof header?)) . ->* . request?)]
|
||||
[redirect/get/forget (() (#:headers (listof header?)) . ->* . request?)]
|
||||
[adjust-timeout! (number? . -> . void?)]
|
||||
[clear-continuation-table! (-> void?)]
|
||||
[send/back (response/c . -> . void?)]
|
||||
|
@ -139,14 +139,13 @@
|
|||
;; ************************************************************
|
||||
;; HIGHER-LEVEL EXPORTS
|
||||
|
||||
(define ((make-redirect/get send/suspend))
|
||||
(send/suspend (lambda (k-url) (redirect-to k-url temporarily))))
|
||||
(define ((make-redirect/get send/suspend) #:headers [hs empty])
|
||||
(send/suspend (lambda (k-url) (redirect-to k-url temporarily #:headers hs))))
|
||||
|
||||
; redirect/get : -> request
|
||||
(define redirect/get (make-redirect/get send/suspend))
|
||||
(define redirect/get/forget (make-redirect/get send/forward))
|
||||
|
||||
|
||||
(define (with-errors-to-browser send/finish-or-back thunk)
|
||||
(with-handlers ([exn:fail? (lambda (exn)
|
||||
(send/finish-or-back
|
||||
|
|
Loading…
Reference in New Issue
Block a user