[Seaside] Seaside REST optional query parameters

Chris cpmbailey at btinternet.com
Sun Mar 24 22:13:16 UTC 2013

On 24/03/2013 21:12, Philippe Marschall wrote:
> On Sun, Mar 24, 2013 at 5:01 PM, Chris <cpmbailey at btinternet.com> wrote:
>> On 24/03/2013 14:55, Philippe Marschall wrote:
>>> On Sun, Mar 24, 2013 at 1:08 PM, Chris <cpmbailey at btinternet.com> wrote:
>>>> Does SeasideREST support optional query parameters so that you only have
>>>> to
>>>> write the one handler?
>>>> i.e.
>>>> getFoo: bar baz: baz
>>>> <get>
>>>> <path: '/foo?bar={bar}&baz={baz}'>
>>>> and the baz variable is nil if the user just navigates to /foo?bar=1.
>>>> Currently it won't match the path handler. There is a mention on the
>>>> quick
>>>> start about how some of the more complicated matching techniques can be
>>>> applied to the query arguments but I can't see how to do it. Is it
>>>> possible
>>>> to use regex?
>>> No, there isn't right now. But you can fake it by removing the
>>> optional arguments from the pragma and manually looking them up.
>>> getFoo: bar baz: baz
>>>    <get>
>>>    <path: '/foo?bar={bar}'>
>>>    | baz |
>>>    baz := self requestContext request at: 'baz' ifAbsent: [ nil ]
>> Hi Philippe
>> That was how I was attempting to get around it but it fails the path match
>> if you add baz to the url.
> Interesting, in that case you'll have to make two methods.
I would, but I'd quite like to support pagination and field filtering 
which comes with 3 optional parameters and then if you add a couple more 
for actual querying, the permutations could get out of control very 
quickly! Is there anything simple that could be done so it could at 
least match /foo?* Then it would still be possible to use the 
requestContext request at: approach


More information about the seaside mailing list