Red で http request を行う方法
Red programming language で http request を行う方法がちょっと分かりづらかったのでメモ
GET
本当にシンプルな GET
>> read http://localhost:8080/api
== {{"status":"ok"}}header の追加など必要な場合
>> write http://localhost:8080/api [GET [
Accept: "application/json"
] ""]
== {{"status":"ok"}}(読みやすいように実際の出力を一部修正してます)
POST
>> write http://localhost:8080/api [POST [
Accept: "application/json"
] {{"data": "data"}}]
== {{"status":"ok"}}
Others
他は一緒です。
ただ、PATCH と DELETE は 0.6.3 時点で対応されていないのでご注意ください。
>> write http://localhost:8080/api [PUT [
Accept: "application/json"
] ""]
== {{"status":"ok"}}
>> write http://localhost:8080/api [PATCH [
Accept: "application/json"
] ""]
*** Internal Error: reserved for future use (or not yet implemented)
*** Where: write
*** Stack:
>> write http://localhost:8080/api [DELETE [
Accept: "application/json"
] ""]
*** Internal Error: reserved for future use (or not yet implemented)
*** Where: write
*** Stack:
refinement
read/write は refinement による挙動の違いがあります。
refinement の一覧はこの辺りで確認できます
read, write 共に binary, lines, info refinement が実装されてます
ちなみに write は append と part もエラー発生せずに通るのですが、みた感じ実装されてない気がします
binary
データを 16 進形式で返します
>> read/binary http://localhost:8080/api
== #{7B22737461747573223A226F6B227D}
lines
文字列を改行で区切って block で返します
>> read/lines http://localhost:8080/api == ["text" "text" "text"]
info
名前の通り
>> info: read/info http://localhost:8080/api
== [200 #(
X-Content-Type-Options: "nosniff"
Server: "WEBrick...
>> print info
200 X-Content-Type-Options: "nosniff"
Server: "WEBrick/1.3.1 (Ruby/2.4.2/2017-09-14)"
Content-Length: "15"
Content-Type: "application/json"
Connection: "close"
Date: "Sun, 03 Dec 2017 09:47:41 GMT" {"status":"ok"}詳しいことは実装見るのが一番早いので、simple-io あたりをご覧ください。