WorkatoでRubyコネクターを利用してHTTPリクエストを行う方法

# はじめに
Workatoでは汎用的なHTTPリクエストが行えるコネクターとしてHTTPコネクターが用意されています。

何らかの理由によりHTTPコネクターを利用することができない、あるいは利用を避けたい場合は、Rubyコネクターで代替することが可能です。詳しくは、以下をご参照ください。


# コード例
以下の各例では、リクエストに対するレスポンスはJSONで返されることを想定しています。
json以外のレスポンスを期待する場合は、以下を参考に対応ください。

https://qiita.com/tabimoba/items/46e6a17f6fb1dd231487

## メソッド別の例
### GET
```ruby
# 引数がない場合
res = get("<リクエスト先URL>").response_format_json
 
{
  result: res
}
 
# 引数がある場合
res = get("<リクエスト先URL>").payload(id: "123").response_format_json
 
{
  result: res
}
```

### POST
```ruby
# 引数がない場合
res = post("<リクエスト先URL>").response_format_json
 
{
  result: res
}
 
# 引数がある場合
res = post("<リクエスト先URL>").params(id: "123").response_format_json
 
{
  result: res
}
```

### PUT
```ruby
# 引数がない場合
res = put("<リクエスト先URL>").response_format_json
 
{
  result: res
}
 
# 引数がある場合
res = put("<リクエスト先URL>").payload(id: "123").response_format_json
 
{
  result: res
}
```

### PATCH
```ruby
# 引数がない場合
res = patch("<リクエスト先URL>")
 
{
  result: res
}
 
# 引数がある場合
res = patch("<リクエスト先URL>").payload(id: "123").response_format_json
 
{
  result: res
}
```

### DELETE
```ruby
# 引数がない場合
res = delete("<リクエスト先URL>").response_format_json
 
{
  result: res
}
 
# 引数がある場合
res = delete("<リクエスト先URL>").params(id: "123").response_format_json
 
{
  result: res
}
```

### OPTIONS
```ruby

# 引数がない場合
res = options("<リクエスト先URL>").response_format_json
 
{
  result: res
}
 
# 引数がある場合
res = options("<リクエスト先URL>").params(id: "123").response_format_json
 
{
  result: res
}
```

## リクエスト別の例
### JSONとしてリクエストするには
request_format_jsonを追加します。

※デフォルトでは本メソッドを追加しなくても、JSONでリクエストが行われますので、通常は無くても問題ありません。

```ruby
res = post("<リクエスト先URL>").params(id: "123").request_format_json.response_format_json
 
{
  result: res
}
```

### XMLとしてリクエストするには
request_format_xmlを追加します。

```ruby
res = post("<リクエスト先URL>").params(id: "123").request_format_json.response_format_json
 
{
  result: res
}
```

### フォームデータしてリクエストするには
request_format_www_form_url_encodedを追加します。

```ruby
res = post("<リクエスト先URL>").params(id: "123").request_format_www_form_url_encoded.response_format_json
 
{
  result: res
}
```

### マルチパートフォームデータとしてリクエストするには（例：ファイルアップロード）
request_format_multipart_formを追加します。

```ruby
res = post("<リクエスト先URL>").params(id: "123").request_format_multipart_form.response_format_json
 
{
  result: res
}
```

## レスポンス別の例
### JSONとしてレスポンスを処理するには
response_format_jsonを追加します。　

```ruby
res = post("<リクエスト先URL>").params(id: "123").response_format_json
 
{
  result: res
}
```

### XMLとしてレスポンスを処理するには
response_format_xmlを追加します。

```ruby
res = post("<リクエスト先URL>").params(id: "123").response_format_xml
 
{
  result: res
}
```

### JSONやXML以外の値としてレスポンスを処理するには（HTML, テキスト, バイナリ等をそのまま扱うには）
response_format_rawを追加します。

```ruby
res = post("<リクエスト先URL>").params(id: "123").response_format_raw
 
{
  result: res
}
```

## その他
### ヘッダを追加するには
headersを追加します。

```ruby
res = get("<リクエスト先URL>").payload(id: "123").headers(content-type: "text/html").response_format_json
 
{
  result: res
}
```

### HTTPレスポンスコード、ヘッダ、ボディを取得するには
```ruby
res = post("<リクエスト先URL>").params(id: "123").response_json.after_response do|code, body, headers|
    {
      code: code,
      headers: headers,
      body: body
    }
  end
 
{
  result: res
}
```