HTTPメソッド
このセクションでは、WorkatoがサポートするさまざまなHTTPメソッドについて説明します。 そのほとんどについて、すでに理解している必要があります。 また、HTTP呼び出しのレスポンス後処理を行い、コネクターコードで後から使いやすい形式にデータを操作する方法についても説明します。
HTTP動詞メソッド
| HTTP動詞 | メソッド | 例 |
|---|---|---|
| GET | get() | get("url", parameters) |
| POST | post() | post("url", payload) |
| PUT | put() | put("url", payload) |
| PATCH | patch() | patch("url", payload) |
| DELETE | delete() | delete("url", parameters) |
| OPTIONS | options() | options("url", parameters) |
リクエストの作成
各HTTP動詞メソッドには、最初の引数としてurl文字列を指定する必要があります。 2番目の引数(任意)は、2つの形式で指定できます。
まず、inputは単一のハッシュとして渡すことができます。 このハッシュは、次のようにexecute引数またはpoll引数のinput引数にすることができます。
execute: lambda do |connection, input|
get("https://www.some_api_endpoint.com/api", input)
endハッシュは、次のように事前に作成することもできます。
execute: lambda do |connection, input|
params = {
"id" => input["id"]
}
get("https://www.some_api_endpoint.com/api", params)
endWorkato SDKフレームワークはこのハッシュ値を処理し、対応するデータ形式に変換します。 GET、DELETE、OPTIONSリクエストの場合、ハッシュデータはURLクエリパラメーターに変換されます。
POST、PUT、およびPATCHの場合、ペイロードは指定した形式でリクエスト本文として作成されます。 さまざまなデータ形式の使用方法の詳細については、データ形式を参照してください。
リクエストデータを渡すもう1つの方法は、一連のキー/値ペアとして渡すことです。
execute: lambda do |connection, input|
post("https://www.some_api_endpoint.com/api", name: input["name"], email: input["email"])
end最初の引数より後のすべての引数は、リクエストデータに変換されます。 この場合、デフォルトのデータ形式はJSONであるため、次のリクエスト本文が作成されます。
{
"name": "Ee Shan",
"email": "[email protected]"
}GETリクエストの場合、次のURLパラメーターが作成されます。
execute: lambda do |connection, input|
get("https://www.some_api_endpoint.com/api", name: input["name"], email: input["email"])
end完全なリクエストURL文字列は次のようになります。
https://www.some_api_endpoint.com/api?name%3DEe%20Shan%26email%3Deeshan%40workato.com認証はリクエストURLに追加されます
定義したすべての認証は、リクエストURLに追加されます。 前の例では、認証が不要であることを前提としています。 認証は、connectionオブジェクトで定義されたapplyブロックを通じて適用されます。
リクエストを作成するための追加ヘルパーメソッド
最初のHTTP動詞メソッドの後にチェーンすることで、Workatoでさまざまな他のヘルパーメソッドを使用できます。 役立つ可能性のあるメソッドを次に示します。
payload
このメソッドを使用すると、リクエストにペイロードを追加でき、上記で説明したものと同じ構文に従います。
execute: lambda do |connection, input|
post("https://www.some_api_endpoint.com/api")
.payload(name: input["name"], email: input["email"])
endpostリクエストの結果として生成されるペイロード:
{
"name": "Ee Shan",
"email": "[email protected]"
}params
このメソッドを使用すると、リクエストにクエリパラメーターを追加でき、上記で説明したものと同じ構文に従います。 これらの値はURLエンコードされます。
execute: lambda do |connection, input|
get("https://www.some_api_endpoint.com/api")
.params(name: input["name"], email: input["email"])
endhttps://www.some_api_endpoint.com/api?name%3DEe%20Shan%26email%3Deeshan%40workato.comheaders
このメソッドを使用すると、リクエストにヘッダーを追加でき、上記で説明したものと同じ構文に従います。 ここで定義されたヘッダーは大文字と小文字を区別しません。
execute: lambda do |connection, input|
get("https://www.some_api_endpoint.com/api")
.headers(Authorization: "Bearer HTB674HJK1")
endTIP
大文字と小文字を区別するヘッダーはRFCから逸脱していますが、HTTPメソッドではheadersの代わりにcase_sensitive_headersメソッドを使用して指定できます。
tls_client_cert
このメソッドを使用すると、SSL証明書、キー、パスフレーズ、および中間証明書を追加できます。
execute: lambda do |connection, input|
get("https://www.some_api_endpoint.com/api")
.tls_client_cert(
certificate: connection['ssl_client_cert'],
key: connection['ssl_client_key'],
passphrase: connection['ssl_key_passphrase'],
intermediates: connection['ssl_client_intermediate_cert']
)
endレスポンス後処理
デフォルトのレスポンスデータ
デフォルトでは、すべてのHTTP動詞メソッドはリクエストのレスポンス本文を返します。 たとえば、次のリクエストはOktaでユーザーを作成します。
execute: lambda do |connection, input|
response = post("/api/v1/users", profile: { login: input["email"], displayName: input["name"] })
endresponse変数は、次のようなハッシュになります。
{
"id": "00ub0oNGTSWTBKOLGLNR",
"status": "STAGED",
"created": "2018-03-13T21:36:25.344Z",
"activated": null,
"statusChanged": null,
"lastLogin": null,
"lastUpdated": "22018-03-13T21:36:25.344Z",
"passwordChanged": null,
"profile": {
"firstName": "Ee Shan",
"lastName": "Sim",
"email": "[email protected]",
"login": "[email protected]",
"mobilePhone": null
},
"credentials": {
"provider": {
"type": "OKTA",
"name": "OKTA"
}
}
}レスポンス処理
after_responseは、HTTPレスポンスのさまざまな部分を処理するためにHTTP動詞メソッドにチェーンできる任意のブロックです。 再びOkta APIを使用して、例を見てみましょう。
すべてのユーザーを一覧表示エンドポイントにリクエストを送信すると、切り詰められたレスポンスは次のようになります。
HTTP/1.1 200 OK
Content-Type: application/json
Link: <https://workatotest.okta.com/api/v1/users?limit=200>; rel="self"
[
{
"id": "00utti9t3j1xO9jOm2p6",
"status": "ACTIVE",
"created": "2018-03-15T08:23:05.000Z",
"activated": null,
"statusChanged": "2018-03-15T08:39:39.000Z",
"lastLogin": "2018-03-15T08:39:40.000Z",
"lastUpdated": "2018-03-15T08:39:40.000Z",
"passwordChanged": "2018-03-15T08:39:39.000Z",
"profile": {},
"credentials": {},
"_links": {}
}
]このレスポンスは3つの部分に分けることができます。 HTTPレスポンスのコード、ヘッダー、および本文です。
after_responseを使用して、HTTPレスポンスのこれらすべての部分を処理できます。 すべてのユーザーを一覧表示し、ヘッダーから既存のページへのリンクを含むレスポンス全体を出力するアクションがあるとします。
execute: lambda do |connection, input|
get("/api/v1/users").after_response do |code, body, headers|
{
code: code,
next_link: headers["link"],
users: body
}
end
endこのアクションの結果出力には、レスポンスの3つの部分がすべて含まれます。
{
"code": 200,
"next_link": "<https://workatotest.okta.com/api/v1/users?limit=200>; rel=\"self\"",
"users": [
{
"id": "00utti9t3j1xO9jOm2p6",
"status": "ACTIVE",
"created": "2018-03-15T08:23:05.000Z",
"activated": null,
"statusChanged": "2018-03-15T08:39:39.000Z",
"lastLogin": "2018-03-15T08:39:40.000Z",
"lastUpdated": "2018-03-15T08:39:40.000Z",
"passwordChanged": "2018-03-15T08:39:39.000Z",
"profile": {},
"credentials": {},
"_links": {}
}
]
}テスト
カスタムコネクターの開発中に、これを簡単に確認できます。 リクエスト後処理を含めると、出力タブに期待されるJSONオブジェクトが反映されるはずです。
レスポンスコードとヘッダー値を含む出力
Last updated: