« JSON形式のリクエストボディからkeyとvalueを抜き出す | トップページ | Bondで1日縛られた土曜日 »

2020年10月 9日 (金)

RestletでのAnnotationとは

RestletでのAnnotationって実はよく分かってなかった。そこで、実際はどういうものなのか簡単なコードを書いて確認してみた(今更感がありますが、、、)。

以下コードを書いてみた。このクラスはRouterから呼ばれている。URIが/command/で以下にDispatchしてくる。
重要なのは以下のDataInputがServerResourceのExtendsであること。
このClassはMethodとしてpost()、get()を備えている。

public class DataInput extends ServerResource {

    @Post
    public String represent(Representation entity) {

        String str = getReference().getPath();
        System.out.println( str );

        return "Post: "+str;
    }

    @Get
    public String getrep(Representation entity) {

        String str1 = getReference().getPath();
        System.out.println( str1 );

        return "get: " +str1;

    }

}

最初から結論を言うと、@Postはその直下のfunctionでpost() methodを置き換える。同様に@Getはその直下のfunctionでget()を置き換える。@Overrideはその直下のfunctionでそのクラスの同名methodを置き換えるのだけれども、@Postや@Getは置き換えるfunction名はなんもよいのだね。

では、このコードをクライアント上のPythonから呼んでみる。

まずはpostで呼んでみる。
response=requests.post("http://192.168.1.62:8010/command/datain/temp")

responseとして以下が返ってくる。
Post: /command/datain/temp

次にgetで呼んでみる。
response=requests.get("http://192.168.1.62:8010/command/datain/temp")

responseとして以下が返ってくる。
get: /command/datain/temp

URIは同じなので両方ともDataInput()が呼ばれる訳だけれども、その中でpost時に呼ばれるmethodとget時に呼ばれるmethodをそれぞれカスタマイズしたfunctionに置き換えるわけだ。

なるほど、なるほど。

« JSON形式のリクエストボディからkeyとvalueを抜き出す | トップページ | Bondで1日縛られた土曜日 »

ラズパイ日記」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« JSON形式のリクエストボディからkeyとvalueを抜き出す | トップページ | Bondで1日縛られた土曜日 »