これまでstubby4jの利用サンプルではGETのHTTPリクエストのみを対象としてきましたが、stubby4jは、その他のメソッドにも対応しています。
本エントリではPOSTメソッドのリクエストのハンドリングのサンプルを記載します。
stubby4jの実行方法等は、はじめてのstubby4jを参照ください。
以下のPOSTのリクエストを送信した結果を確認するためにDHCを使用しています
POSTのリクエストを受け取って固定のメッセージを返す
"Hello, World"という固定のメッセージを応答するサンプルです
■定義
POSTメソッドのリクエストを受け取り固定メッセージを返すようにするにはYAMLファイルに以下のような定義をします。
- request: method: POST url: /sample/staticmsg response: status: 200 headers: content-type: text/plain body: Hello, World
■実行結果
"Hello, World"というレスポンスボディが返されていることが分かります。
Echoサーバ : リクエストの内容をオウム返しする
リクエストの内容をそのまま応答するサンプルです
■定義
requestの「post」の項目でリクエストボディの内容を受け取って、responseの「body」にセットするようにしています。
- request: method: POST url: /sample/echo post: "((\\s|.)*)" response: status: 200 headers: content-type: text/plain body: <%post.1%>
■実行結果
リクエストボディの内容がレスポンスボディにセットされて返されていることが分かります。
JSONのリクエストの場合
XMLのリクエストの場合
JSONメッセージの値部分をレスポンスに含める
リクエストのJSONメッセージの一部を切り出し、レスポンスに含めるサンプルです
■定義
リクエストのJSONメッセージの各項目のvalue部分をレスポンスに含めるようにしています
- request: method: POST url: /sample/echo2 headers: content-type: application/json post: > { "map": [{"key1": "(.*)"}, {"key2": "(.*)"}, {"key3": {"key": "(.*)"}}] } response: headers: content-type: application/json status: 200 body: > { "recevice1": "<%post.1%>", "recevice1": "<%post.2%>", "recevice1": "<%post.3%>" }
■実行結果
- ※注意
上記のYAMLの定義ではリクエストボディ内の改行等を考慮せずに受け取るようにしています。
そのため実行時のリクエストボディに改行等を含めたり項目の並び順を変えたりすると上手くいかなくなります。