[racket-dev] [plt] Push #26024: master branch updated

From: Jay McCarthy (jay at racket-lang.org)
Date: Mon Jan 7 10:24:14 EST 2013

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 <samth at 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 <jay at 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 <samth at 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,  <jay at 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 <jay at 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"],
>>> > + at 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[
>>
>>

Posted on the dev mailing list.