[Twisted-web] Leaf Resources with child Leaf Resources

exarkun at twistedmatrix.com exarkun at twistedmatrix.com
Wed Feb 29 14:45:39 EST 2012


On 06:09 pm, jacek99 at gmail.com wrote:
>Sorry, let me be more clear:
>
>I have a Resource let's say CustomerRestService which is a leaf and 
>handles
>everything related to '/customer'
>Then I want a CustomerAddressRestService Resource, which is also a leaf 
>and
>should handle everything related to '/customer/<customerId>/address'.

Well.... my first reaction is that this doesn't make sense.  Leaves 
don't have leaves.  That's what makes them leaves.

Your CustomerRestService is not a leaf resource.

Why do you think it should be one?
>So I need a leaf Resource (i.e. it actually intercepts 
>GET/POST/PUT/DELETE
>requests to the root '/customer' URL)
>with a child leaf Resource (which intercepts the GET/POST/PUT/DELETE
>requests to its root '/customer/<customerId>/address' URL).
>
>Twisted does not really allow for nested leaf resources, but REST is 
>all
>about nested URL schemes, e.g.

Right.  Because "nested leaf resource" is self contradictory.
>Customer -> Customer Address
>Customer -> Customer Phone
>Customer -> Customer Invoice -> Customer Payment
>
>etc.
>
>Taking CorePost out of the picture and just going back to raw 
>twisted.web,
>how would you recommend that be done?

Apart from what I said above, and still not really understanding why you 
want this, the implementation of the traversal mechanism is exposed as 
`twisted.web.resource.getChildForRequest`.  After you stop traversal 
with your first "leaf" resource, you can finish it by calling 
`getChildForRequest` manually, and then manually rendering the resulting 
resource.

Jean-Paul



More information about the Twisted-web mailing list