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日縛られた土曜日 »
「ラズパイ日記」カテゴリの記事
- NEO-7M GPSモジュールが中国から届いた(2023.01.15)
- TNCアプリにおけるDemoduatorの動作確認(2023.01.09)
- AFSKでの復調について(2023.01.04)
- APRSでのNRZIについて備忘録(2023.01.02)
- pico_tnc 2200Hz(Space)でPhaseをずらす件の備忘録(2022.12.31)
« JSON形式のリクエストボディからkeyとvalueを抜き出す | トップページ | Bondで1日縛られた土曜日 »
コメント