## 11.21.2 CGIXMLRPCRequestHandler

`CGIXMLRPCRequestHandler` クラスは、Python の CGI スクリプトに送られた XML-RPC リクエストを処理するときに使用できます

`register_function`( | function[, name])

  XML-RPC リクエストに応じる関数を登録します。 引数nameが与えられている場合はその値が、関数functionに関連付けられます。これが与えられない場合は`function.__name__`の値が用いられます。引数nameは通常の文字列でもユニコード文字列でも良く、Pythonで識別子として正しくない文字(" . "ピリオドなど )を含んでもかまいません。

`register_instance`( | instance)

  オブジェクトを登録し、そのオブジェクトの`register_function()`で登録されていないメソッドを公開します。もし、instanceがメソッド`_dispatch()`を定義していれば、`_dispatch()`が、リクエストされたメソッド名とパラメータの組を引数として呼び出されます。そして、`_dispatch()`の返り値が結果としてクライアントに返されます。もし、instanceがメソッド`_dispatch()`を定義していなければ、リクエストされたメソッド名がそのインスタンスに定義されているメソッド名から探されます。リクエストされたメソッド名がピリオドを含む場合は、（訳注：通常のPythonでのピリオドの解釈と同様に）階層的にオブジェクトを探索します。そして、そこで見つかったオブジェクトをリクエストから渡された引数で呼び出し、その返り値をクライアントに返します。

`register_introspection_functions`( | )

  XML-RPC のイントロスペクション関数、`system.listMethods`、`system.methodHelp`、`system.methodSignature` を登録します。

`register_multicall_functions`( | )

  XML-RPC における複数の要求を処理する関数 system.multicall を登録します。

`handle_request`( | [request_text = None])

  XML-RPC リクエストを処理します。request_text で渡されるのは、HTTP サーバーに提供された POST データです。何も渡されなければ標準入力からのデータが使われます。

以下に例を示します。

    class MyFuncs:
        def div(self, x, y) : return div(x,y)

    handler = CGIXMLRPCRequestHandler()
    handler.register_function(pow)
    handler.register_function(lambda x,y: x+y, 'add')
    handler.register_introspection_functions()
    handler.register_instance(MyFuncs())
    handler.handle_request()