[Seaside] Seaside REST optional query parameters

Philippe Marschall philippe.marschall at gmail.com
Mon Mar 25 21:36:27 UTC 2013


On Sun, Mar 24, 2013 at 11:13 PM, Chris <cpmbailey at btinternet.com> wrote:
> 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

You can try to comment out the guard at the beginning of

WAComplexRoute >> #matchesParameters:

Cheers
Philippe


More information about the seaside mailing list