覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

stubby4j - POSTのリクエストをハンドリングする

これまで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"というレスポンスボディが返されていることが分かります。

f:id:nini_y:20161028123330p:plain


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のリクエストの場合

f:id:nini_y:20161028123351p:plain

XMLのリクエストの場合

f:id:nini_y:20161028123421p:plain


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%>"
         }

■実行結果

f:id:nini_y:20161028123429p:plain

  • ※注意
    上記のYAMLの定義ではリクエストボディ内の改行等を考慮せずに受け取るようにしています。
    そのため実行時のリクエストボディに改行等を含めたり項目の並び順を変えたりすると上手くいかなくなります。



関連エントリ