How about just saying that the input is either the string "get" "put" "post" or a match pattern and if it is one of the former, then do case-folding before checking?
Robby On Mon, Jan 7, 2013 at 9:24 AM, Jay McCarthy <j...@racket-lang.org> wrote: > I like the idea of the match patterns... but I'm worried about the details. > > The names are very common: get, post, head, etc. And I think exporting > them as http-method-get or GET, etc would be hideous. > > Also, there is no exhaustive list of valid HTTP methods... anything > can be used. And even the lisf of commonly used ones is long: > > http://annevankesteren.nl/2007/10/http-methods (as of 2007) > > Do you have any ideas for a solution to this? > > Jay > > > On Fri, Jan 4, 2013 at 9:27 AM, Sam Tobin-Hochstadt <sa...@ccs.neu.edu> > wrote: > > Ah, that makes sense. You could think about providing match patterns > > for each of the HTTP methods, in that case -- people might be less > > confused by that than strings. > > > > On Fri, Jan 4, 2013 at 10:30 AM, Jay McCarthy <j...@racket-lang.org> > wrote: > >> The programmer's input is not a string. It is a match pattern, so you > can > >> use 'or', '_', etc. > >> > >> > >> On Fri, Jan 4, 2013 at 6:30 AM, Sam Tobin-Hochstadt <sa...@ccs.neu.edu> > >> wrote: > >>> > >>> Why not normalize this at the other end (ie, normalize the provided > >>> string as well as the actual method) so that "GET" as well as "get" > >>> will work? > >>> > >>> Sam > >>> > >>> On Fri, Jan 4, 2013 at 7:45 AM, <j...@racket-lang.org> wrote: > >>> > jay has updated `master' from aa5f2e7875 to c07ff948ee. > >>> > http://git.racket-lang.org/plt/aa5f2e7875..c07ff948ee > >>> > > >>> > =====[ One Commit > ]===================================================== > >>> > Directory summary: > >>> > 100.0% collects/web-server/scribblings/ > >>> > > >>> > ~~~~~~~~~~ > >>> > > >>> > c07ff94 Jay McCarthy <j...@racket-lang.org> 2013-01-04 05:44 > >>> > : > >>> > | Fixes PR13406 > >>> > : > >>> > M collects/web-server/scribblings/dispatch.scrbl | 11 +++++++++-- > >>> > > >>> > =====[ Overall Diff > ]=================================================== > >>> > > >>> > collects/web-server/scribblings/dispatch.scrbl > >>> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >>> > --- OLD/collects/web-server/scribblings/dispatch.scrbl > >>> > +++ NEW/collects/web-server/scribblings/dispatch.scrbl > >>> > @@ -118,6 +118,7 @@ or else the filesystem server will never see the > >>> > requests. > >>> > [maybe-method > >>> > code:blank > >>> > (code:line #:method method)] > >>> > + [method pat] > >>> > [maybe-else-clause > >>> > code:blank > >>> > [else else-fun]]) > >>> > @@ -137,9 +138,15 @@ the @racket[dispatch-fun] given as its first > >>> > argument. > >>> > @racket[(next-dispatcher)] to signal to the Web Server that this > >>> > dispatcher does not apply. > >>> > > >>> > - If any @racket[_method] is left out, it assumed to apply to > requests > >>> > -without methods and GET methods. > >>> > + The @racket[_method] syntax is used in a @racket[match] expression > to > >>> > +match the @racket[request-method] part of the incoming request > >>> > +object. However, since HTTP allows methods to use any case, the byte > >>> > +string from @racket[request-method] is normalized to a lower-case > >>> > +string. Thus, valid patterns are things like: @racket["get"], > >>> > +@racket["post"], @racket["head"], @racket[(or "get" "post")], etc. > >>> > > >>> > + If @racket[_method] is left out, it assumed to apply to requests > >>> > +without methods and GET methods. > >>> > } > >>> > > >>> > @defform[ > >> > >> > _________________________ > Racket Developers list: > http://lists.racket-lang.org/dev >
_________________________ Racket Developers list: http://lists.racket-lang.org/dev