Docs Menu
Docs Home
/ /
Atlas App Services
/ /

HTTP Service [非推奨]

項目一覧

  • Overview
  • 構成パラメータ
  • サービス アクション
  • 受信 Webhook
  • 構成
  • リクエスト ペイロード
  • Webhook 関数の例

重要

サードパーティ サービスとプッシュ通知の廃止

Atlas App Services のサードパーティ サービスとプッシュ通知は非推奨となり、代わりに関数内の外部依存関係を使用する HTTP エンドポイントを作成できるようになりました。

Webhook はHTTPS endpointsに名前変更され、動作は変更されません。 既存の Webhook を移行する必要があります。

既存のサービスは、 30、2025 まで引き続き機能します。

サードパーティ サービスとプッシュ通知は非推奨になったため、App Services UI からデフォルトで削除されました。 既存のサードパーティ サービスまたはプッシュ通知を管理する必要がある場合は、次の操作を実行して構成を UI に追加できます。

  • 左側のナビゲーションの [ App Settings Manageセクションの下にある [] をクリックします。

  • Temporarily Re-Enable 3rd Party Servicesの横にあるトグル スイッチを有効にし、変更を保存します。

Atlas App Services HTTP Service は、 REST API を提供するサービスなど、HTTP 経由で利用可能な任意のサービスと通信できる汎用インターフェースです。 これは、App Services にカスタム サービスが組み込まれていないサービスを使用する必要がある場合に役立ちます。

  • アウトバウンド HTTP リクエストを送信するには、いずれかの HTTP アクションを呼び出します。

  • 外部サービスからの受信リクエストを処理するには、受信 Webhook を構成し、可能な場合はそれをサービスに提供します。 例については、このページの「受信 Webhook 」セクションを参照してください。

HTTP Serviceインターフェースを作成するときは、次のパラメータに値を指定する必要があります。

<Service Name>/HTTP_endpoints/[サービス名]/config.json
{
"name": "<Service Name>",
"type": "http",
"config": {}
}
Parameter
説明
Service Name
config.name
このHTTP Serviceインターフェースの名前。 これは、アプリケーション内の他のすべてのサービス インターフェースと一意である必要があります。

Atlas App Services のHTTP Serviceは、関数および SDK で呼び出すことができる次のアクションを提供します。 各アクションは標準の HTTP リクエスト メソッドにマッピングします。

HTTP Serviceアクションの使用手順については、「サービスアクションの呼び出し 」を参照してください。

注意

サービス ルールでサービス アクションを有効にする必要があります。

注意

HTTP Webhook のエンドポイントへの変換

HTTP Service Webhook は非推奨で、代わりに カスタムHTTPS endpointsが採用されます。 既存の Webhook は 1 回のクリックでエンドポイントに自動的に移行できます。 方法については、「 Webhook をHTTPS endpointsに変換する 」を参照してください。

HTTP 受信 Webhook を構成するときは、次のパラメータに値を指定する必要があります。

HTTP 受信 Webhook を構成する ときは、次の形式の 構成ファイル を提供する必要があります。

http_endpoints/"サービス名"/"Webhook<Service Name> <Webhook Name>名"/config.json
{
"name": "<Webhook Name>",
"can_evaluate": { <JSON Expression> },
"run_as_authed_user": <Boolean>,
"run_as_user_id": "<App Services User ID>",
"run_as_user_id_script_source": "<Function Source Code>",
"respond_result": <Boolean>,
"fetch_custom_user_data": <Boolean>,
"create_user_on_auth": <Boolean>,
"options": {
"httpMethod": "<HTTP Method>",
"validationMethod": "<Webhook Validation Method>",
"secret": "<Webhook Secret>"
}
}
構成値
説明
Webhook Name
name

必須。 Webhook の名前。

注意

HTTP Serviceインターフェース内の各受信 Webhook には一意の名前が必要です。

Respond With Result
respond_result
必須。 trueの場合、App Services は Webhook を呼び出したクライアントに応答を送信します。 レスポンス本体は、Webhook 関数の戻り値になります。
Run Webhook As
run_as_user_id
run_as_user_id_script_source

任意。 Webhook が呼び出されるときに Webhook 関数を実行するApp Services ユーザーの ID。

実行ユーザーを構成するには、次の 3 つの方法があります。

  • System: 実行ユーザーはシステムユーザーです。このユーザーは MongoDB CRUD と Aggregation API へのフルアクセス権を持ち、すべてのルールとスキーマの検証をバイパスします。

  • User Id: 関数を実行する特定のアプリケーション ユーザーを選択します。

  • Script: 実行ユーザーのidを返す関数を定義します。

でユーザー を直接指定することも、ID run_as_user_idで Webhook ペイロードを受け入れ、ユーザーAtlas Function を返す文字列化されたID run_as_user_id_script_sourceを提供することもできます。特定のユーザー ID またはユーザー ID に解決される関数を指定しない場合、App Services は MongoDB CRUD および集計 API へのフルアクセス権を持つシステムユーザーとして Webhook 関数を実行し、すべてのルールとスキーマの検証をバイパスします。

HTTP Method
options.httpMethod

HTTP メソッド 受信する Webhook リクエストが使用する必要があるもの。任意のメソッドを受け入れるか、特定のメソッドを指定するように Webhook を構成できます。 次のメソッドがサポートされています。

  • GET

  • POST

  • PUT

  • PATCH

  • DELETE

  • HEAD

  • ANY

Request Validation
options.validationMethod

受信リクエストが使用するリクエスト検証方法。 次の検証タイプがサポートされています。

Secret
options.secret
Request Validationが有効になっている場合、これは検証シークレットです。

App Services は、受信する Webhook 関数の最初の引数としてpayloadドキュメントを自動的に渡します。 HTTP Service 受信 Webhook では、 payloadオブジェクトは受信 HTTP リクエストを表し、形式は次のとおりです。

{
"query": <query parameters>,
"headers": <request headers>,
"body": <request body (BSON)>
}
フィールド
説明
query

各フィールドが クエリ パラメータ に対応するドキュメント : Webhook URL に含まれる外部サービス。

クエリ パラメータsomeParameter=42&anotherParameter=helloを使用して Webhook URL に送信されたリクエストには、次のqueryドキュメントが含まれます。

"query": {
"someParameter": 42,
"anotherParameter": "hello"
}
headers

各フィールドが HTTP ヘッダー に対応するドキュメント : Webhook URL に含まれる外部サービス。

Content-Type: application/jsonヘッダーを持つ Webhook URL に送信されたリクエストには、次のheadersドキュメントが含まれます。

"headers": {
"Content-Type": ["application/json"]
}
body

リクエスト本体からエンコードされたBSON.Binaryオブジェクト。 バイナリ オブジェクトを string にシリアル化し、その string を EJSON に解析することで、リクエスト本文にアクセスできます。

const body = EJSON.parse(payload.body.text())

次の Webhook 関数は、受信データを MongoDB コレクションに挿入し、レスポンスbodyinsertedIdを返します。

exports = function(payload, response) {
const mongodb = context.services.get("mongodb-atlas");
const requestLogs = mongodb.db("test").collection("requestlogs");
requestLogs.insertOne({
body: EJSON.parse(payload.body.text()),
query: payload.query
}).then(result => {
response.setStatusCode(201);
response.setBody(result.insertedId);
})
};

戻る

サービス ルールの構成