Docs Menu
Docs Home
/ /
Atlas App Services
/ /

HTTP 서비스 [사용 중단됨]

이 페이지의 내용

  • 개요
  • 구성 매개변수
  • 서비스 조치
  • 수신 Webhooks
  • 구성
  • 요청 페이로드
  • 웹훅 함수 예시

중요

타사 서비스 & 푸시 알림 사용 중단

App Services의 타사 서비스 및 푸시 알림은 함수에서 외부 종속성을 사용하는 HTTP 엔드포인트를 만들기 위해 더 이상 사용되지 않습니다.

웹훅은 동작에 대한 변경 없이 HTTPS 엔드포인트로 이름이 변경되었습니다. 기존 웹훅을 마이그레이션해야 합니다.

기존 서비스는,9월까지 30 계속2025 작동합니다.

타사 서비스 및 푸시 알림은 이제 더 이상 사용되지 않으므로 App Services UI에서 기본적으로 제거되었습니다. 기존 타사 서비스 또는 푸시 알림을 관리해야 하는 경우 다음을 수행하여 구성을 UI에 다시 추가할 수 있습니다.

  • 왼쪽 탐색의 Manage 섹션에서 App Settings를 클릭합니다.

  • Temporarily Re-Enable 3rd Party Services 옆의 토글 스위치를 활성화한 다음 변경 사항을 저장합니다.

Atlas App Services HTTP Service는 REST API를 제공하는 서비스 등 HTTP를 통해 사용할 수 있는 모든 서비스와 통신할 수 있는 일반 인터페이스입니다. 이는 App Services에 사용자 지정 서비스가 내장되어 있지 않은 서비스를 사용해야 할 때 유용합니다.

  • 아웃바운드 HTTP 요청 을 보내려면 HTTP 작업 중 하나를 호출합니다.

  • 외부 서비스에서 들어오는 요청을 처리하다 하려면 들어오는 웹훅을 구성하고 가능한 경우 서비스에 제공합니다. 예시 는 이 페이지의 수신 웹훅 섹션을 참조하세요.

HTTP Service를 생성할 때 다음 매개변수에 대한 값을 제공해야 합니다.

/http_endpoints/<Service Name>/config.json
{
"name": "<Service Name>",
"type": "http",
"config": {}
}
Parameter
설명
Service Name
config.name
이 HTTP Service의 이름입니다. 이는 애플리케이션의 다른 모든 서비스 인터페이스와 구별되어야 합니다.

App Services 의 HTTP Service 는 함수 및 SDK에서 호출할 수 있는 다음 조치를 제공합니다. 각 조치 은 표준 HTTP 요청 메서드에 매핑됩니다.

HTTP 서비스 작업 사용에 대한 지침은 서비스 작업 호출을 참조하세요.

참고

서비스 작업을 호출하려면 먼저 서비스 규칙 에서 서비스 작업을 활성화해야 합니다.

참고

HTTP Webhooks를 엔드포인트로 변환

HTTP Service 웹훅은 더 이상 사용되지 않으며 사용자 지정 HTTPS endpoints가 사용됩니다. 클릭 한 번으로 기존 웹훅을 엔드포인트로 자동으로 마이그레이션할 수 있습니다. 방법을 알아보려면 웹훅을 HTTPS 엔드포인트로 변환을 참조하세요.

HTTP 수신 웹훅을 구성 할때 다음 형식의 구성 파일 을 제공해야 합니다.

http_endpoints/<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

필수입니다. 웹훅의 이름입니다.

참고

HTTP Service 인터페이스에서 수신되는 각 웹훅은 고유한 이름을 가져야 합니다.

Respond With Result
respond_result
필수입니다. true 인 경우 App Services는 웹훅을 호출한 클라이언트에 응답을 보냅니다. 응답 본문은 웹훅 함수의 반환 값이 됩니다.
Run Webhook As
run_as_user_id
run_as_user_id_script_source

선택 사항. 웹훅이 호출될 때 웹훅 함수를 실행하는 App Services 사용자 의 ID입니다.

실행 사용자를 구성하는 방법에는 세 가지가 있습니다.

  • System실행 사용자는 시스템 사용자 로, MongoDB CRUD 및 애그리게이션 API에 대한 전체 액세스 을 가지며 모든 규칙 및 스키마 유효성 검사 를 우회합니다.

  • User Id: 함수를 실행할 특정 애플리케이션 사용자를 선택합니다.

  • Script: 실행 사용자의 id 를 반환하는 함수 를 정의합니다.

run_as_user_id 에 사용자 ID를 직접 지정하거나 웹훅 페이로드를 허용하고 run_as_user_id_script_source 에 사용자 ID를 반환하는 문자열화된 Atlas Function 를 제공할 수 있습니다. 특정 사용자 ID 또는 사용자 ID로 확인되는 함수를 지정하지 않으면 App Services 는 MongoDB CRUD 및 애그리게이션 API에 대한 전체 액세스 이 있는 시스템 사용자 로 웹훅 함수를 실행하고 모든 규칙 및 스키마 유효성 검사 를 우회합니다.

HTTP Method
options.httpMethod

HTTP 메서드 수신 웹훅 요청이 사용해야 합니다. 모든 메서드를 허용하도록 웹훅을 구성하거나 특정 메서드를 지정할 수 있습니다. 다음 메서드가 지원됩니다:

  • GET

  • POST

  • PUT

  • PATCH

  • DELETE

  • HEAD

  • ANY

Request Validation
options.validationMethod

들어오는 요청에서 사용해야 하는 요청 유효성 검사 방법입니다. 다음과 같은 유효성 검사 유형이 지원됩니다:

Secret
options.secret
Request Validation 이 활성화된 경우 이는 유효성 검사 시크릿입니다.

App Services는 수신 웹훅 함수에 payload 문서를 첫 번째 인수로 자동으로 전달합니다. HTTP 서비스 수신 웹훅에서 payload 객체는 수신 HTTP 요청을 나타내며 다음과 같은 형식을 갖습니다.

{
"query": <query parameters>,
"headers": <request headers>,
"body": <request body (BSON)>
}
필드
설명
query

각 필드 가 쿼리 매개변수 에 해당하는 문서 웹훅 URL 에 포함된 외부 서비스입니다.

예시

쿼리 매개변수 someParameter=42&anotherParameter=hello 를 사용하여 웹훅 URL로 전송된 요청에는 다음과 같은 query 문서가 있습니다.

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

각 필드 가 HTTP 헤더 에 해당하는 문서 웹훅 URL 에 포함된 외부 서비스입니다.

예시

Content-Type: application/json 헤더가 있는 웹훅 URL로 전송된 요청에는 다음과 같은 headers 문서가 있습니다.

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

요청 본문에서 인코딩된 BSON.Binary 객체입니다. 바이너리 객체를 문자열로 직렬화한 다음 문자열을 EJSON으로 구문 분석하여 요청 본문에 액세스할 수 있습니다.

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

다음 웹훅 함수는 수신 데이터를 MongoDB collection에 삽입하고 응답 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);
})
};

돌아가기

서비스 규칙 구성