[Zope] XMLRPC accessing Zope DTML/SQL methods
Dieter Maurer
dieter@handshake.de
Wed, 8 Nov 2000 22:05:58 +0100 (CET)
Mayers, Philip J writes:
> def extmethod(self, REQUEST):
> return str(REQUEST)
>
> >From the web that prints the string Representation of REQUEST. But, over
> XMLRPC, this:
>
> s=xmlrpblib.Server("http://server.name/Zope/path/")
> s.path.extmethod()
>
> Returns the string representation of REQUEST, but *this*
>
> s.path.extmethod('rrr')
>
> return 'rrr'. What's happening?
That's the ZPublisher magic:
it tries to match the requirements of the called object
with what is provided by the request.
In your first example, you did not provide a parameter,
but your function requires one. ZPublisher determined
the "REQUEST" object as candidate based on the parameters
name.
In your second example, you did provide a parameter.
ZPublisher used this positional parameter to satisfy
the first positional parameter of your function.
Thus, if your function requires two parameters: say
'text' and 'REQUEST', your second example would
behave as your first now does.
There is a document on zope.org that describes this
ZPublisher magic in more detail.
But maybe, you already know enough to fulfill your
requirements.
Dieter