Docs Menu
Docs Home
/ /
Atlas App Services
/

사용자 지정 HTTPS 엔드포인트 [사용 중단됨]

이 페이지의 내용

  • 엔드포인트의 구조
  • 기본 URL
  • 엔드포인트 경로
  • HTTP 메서드
  • 사용자 지정 HTTPS Endpoints 만들기
  • 인증
  • 권한 부여
  • 엔드포인트 함수 쓰기
  • 액세스 요청 데이터
  • HTTPS 응답 반환
  • 예시
  • 사용자 지정 엔드포인트 호출
  • 응답 데이터 형식 선택하기
  • 요청 인증
  • 요청 승인

사용자 지정 HTTPS endpoints를 정의해 외부 서비스와 통합되는 앱별 API 경로나 웹훅을 생성할 수 있습니다. 사용자 지정 엔드포인트는 특정 URL과 HTTP 메서드를 위한 수신 요청을 처리할 때 쓰는 서버리스 함수를 사용합니다.

참고

엔드포인트는 암호화된 표준 HTTPS requestsfmf 사용하므로 이를 호출하기 위해 데이터베이스 드라이버나 자체 라이브러리를 설치할 필요가 없습니다. 대신 모든 HTTP 클라이언트에서 이와 같은 요청을 보내면 됩니다.

curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/hello" \
-X POST \
-H "Accept: application/json" \
-H "apiKey: TpqAKQgvhZE4r6AOzpVydJ9a3tB1BLMrgDzLlBLbihKNDzSJWTAHMVbsMoIOpnM6" \
-d '{
"name": "Casey"
}'

엔드포인트는 특정 URL로 전송된 한 개 이상의 HTTP 메서드를 처리합니다.

앱의 엔드포인트는 기본 URL을 공유합니다. URL은 앱 ID를 사용하여 고유한 방식으로 앱을 가리킵니다.

전역에 배포된 앱은 다음 형식을 사용합니다.

엔드포인트 기본 URL(글로벌 앱):
https://data.mongodb-api.com/app/<App ID>/endpoint

로컬로 배포된 앱의 엔드포인트에서는 해당 앱의 배포 리전에 특정된 기본 URL을 사용합니다(예: us-east-1).

엔드포인트 기본 URL(로컬 앱)
https://<Region>.aws.data.mongodb-api.com/app/<App ID>/endpoint

각 HTTPS endpoints에는 엔드포인트의 이름 역할을 하는 경로가 있습니다. 엔드포인트의 경로는 임의로 정해지며 앱에 따라 다릅니다. 하지만 엔드포인트 URL 경로에 표시되기 때문에 경로가 실행하는 조치를 나타내야 합니다.

경로 이름은 슬래시(/)로 시작해야 하며 중첩된 경로를 나타내는 추가 슬래시를 포함할 수 있습니다.

엔드포인트 경로
/my/nested/route

앱의 기본 URL에 경로를 추가하고 HTTP 요청을 보내 엔드포인트를 호출합니다.

An endpoint URL
https://data.mongodb-api.com/app/<App ID>/endpoint/my/nested/route

앱 의 각 엔드포인트는 하나 이상의 HTTP 메서드 를 처리합니다. 지정된 경로에 대해 예를 예시 POST 새 리소스 를 만드는 요청과 GET 기존 리소스를 나열하는 요청 을 수락하는 단일 경로가 있을 수 있습니다.

경로는 동일하지만 서로 다른 요청 메서드를 처리하는 여러 개의 사용자 지정 엔드포인트를 정의할 수 있습니다. 또는, 모든 메서드를 처리하는 경로를 위한 단일 엔드포인트를 정의할 수 있습니다.

사용자 지정 엔드포인트는 다음과 같은 표준 HTTP 메서드를 지원합니다.

  • 얻다

  • POST

  • PUT

  • 패치

  • 삭제

App Services UI에서, 혹은 App Services CLI로 구성 파일을 배포하여 원하는 앱의 데이터 API를 구성할 수 있습니다.

  1. 왼쪽 탐색 메뉴에서 HTTPS Endpoints 을 클릭한 다음 Add An Endpoint 을 클릭합니다.

  2. 엔드포인트 Route을 정의합니다. 경로 이름은 슬래시(/)로 시작해야 하며 중첩된 경로를 나타내는 추가 슬래시를 포함할 수 있습니다.

  3. 드롭다운에서 엔드포인트의 HTTP 메서드를 선택합니다. 특정 방법(예: GET 또는 POST)을 선택하거나 엔드포인트가 모든 HTTP 메서드(예: ANY)를 수락하도록 구성할 수 있습니다.

  4. JSON 또는 EJSON 중 응답 유형을 선택합니다. Respond With Result 을(를) 활성화하여 엔드포인트 함수의 반환 값을 응답 본문으로 자동으로 포함할 수 있습니다.

  5. 엔드포인트에 대한 요청을 처리하는 엔드포인트 함수를 작성합니다. 또는 기존 함수를 이름으로 지정할 수도 있습니다.

  6. 보안을 강화하려면 요청 권한 부여를 구성할 수 있습니다.

  7. 데이터 API 구성을 저장합니다.

  8. 데이터를 안전하게 읽고 쓰기 위한 요청을 허용하도록 액세스 권한을 구성합니다.

  9. 앱을 저장하고 배포합니다.

  1. 최신 버전의 앱 을 가져옵니다.

    appservices pull --remote="<Your App ID>"
  2. 사용자 지정 엔드포인트에 대한 구성 객체를 정의합니다.

    http_endpoints/config.json
    [
    {
    "route": "<Endpoint route name>",
    "http_method": "<HTTP method>",
    "function_name": "<Endpoint function name",
    "validation_method": "<Authorization scheme>",
    "respond_result": <boolean>,
    "fetch_custom_user_data": <boolean>,
    "create_user_on_auth": <boolean>,
    "disabled": <boolean>
    }
    ]
  3. 하나 이상의 컬렉션에 대한 규칙 을 정의합니다.

    data_sources/mongodb-atlas/<db>/<collection>/rules.json
    {
    "database": "<Database Name>",
    "collection": "<Collection Name>",
    "roles": [<Role>],
    "filters": [<Filter>]
    }
  4. 앱 을 배포합니다.

    appservices push

사용자 지정 엔드포인트는 특정 사용자의 컨텍스트에서 실행됩니다. 이 때문에 앱에서는 각 요청에 대해 규칙을 시행하고 문서 스키마의 유효성을 검사할 수 있습니다.

기본적으로 엔드포인트는 API 키 또는 JWT와 같은 애플리케이션 사용자 중 한 명의 자격 증명을 각 요청에 포함하도록 요구하는 애플리케이션 인증을 사용합니다. 또한 애플리케이션의 요구 사항에 맞게 다른 사용자 지정 인증 체계를 구성할 수도 있습니다.

요청을 인증하는 방법의 예는 데이터 API 요청 인증을 참조하세요.

애플리케이션 인증을 위해서는 사용자가 앱에 대해 허용한 인증 제공자를 통해 로그인해야 합니다. 요청에는 인증 제공자가 부여한 액세스 토큰이나 사용자가 로그인하는 데 사용하는 자격 증명이 포함될 수 있습니다(예: API 키 또는 이메일과 비밀번호).

사용자 ID 인증 은 모든 요청을 미리 선택된 단일 애플리케이션 사용자로 실행합니다. 이는 누가 엔드포인트를 호출했는지에 관계없이 모든 요청에 동일한 권한이 있어야 하는 경우에 유용합니다.

사용자를 선택하려면 엔드포인트 구성에서 사용자 계정 ID 를 지정합니다.

functions/config.json
[
{
...,
"run_as_user_id": "628e47baf4c2ac2796fc8a91"
}
]

스크립트 인증 은 함수를 호출하여 요청 이 실행되는 애플리케이션 사용자를 결정합니다. 이를 사용하여 사용자 지정 인증 및 권한 부여 체계를 구현 수 있습니다.

및 애그리게이션 API에 대한 전체 액세스 이 있고 규칙, 역할 또는 제한된 권한의 적용을 받지 않는 ID string { "runAsSystem": true } 시스템 사용자 로 요청 을 실행 하려면 함수가 기존 애플리케이션 사용자의 계정 를 또는 로 반환해야 합니다.MongoDB CRUD

함수를 정의하려면 엔드포인트 구성에서 소스 코드를 지정하세요.

functions/config.json
[
{
...,
"run_as_user_id_script_source": "exports = () => {return \"628e47baf4c2ac2796fc8a91\"}"
}
]

시스템 인증 은 자격 증명 이 필요하지 않고, MongoDB CRUD 및 애그리게이션 API에 대한 전체 액세스 이 있으며, 규칙, 역할 또는 제한된 권한의 적용을 받지 않는 시스템 사용자 로 실행 엔드포인트를 구성합니다.

functions/config.json
[
{
...,
"run_as_system": true
}
]

UI에서 생성하는 새 엔드포인트는 기본적으로 시스템 인증을 사용합니다.

엔드포인트는 인증된 사용자에게 요청에 추가 권한 부여 정보를 제공하도록 요구할 수 있습니다. 엔드포인트 기능을 구성하여 각 사용자 정의 엔드포인트에 대한 권한 부여 체계를 정의합니다.

엔드포인트는 기본적으로 요청이 권한 부여되었음을 증명하기 위해 시크릿 문자열을 사용하는 내장 권한 부여 체계 집합을 지원합니다. 내장 체계와 함께 사용하거나 내장 체계 대신 사용할 수 있는 사용자 지정 권한 부여 체계를 정의할 수도 있습니다.

특정 함수에 대한 권한 부여 방법을 알아보려면 함수 정의를 참조하세요.

엔드포인트는 다음과 같은 내장 권한 부여 체계를 지원합니다.

모든 인증 사용자는 엔드포인트를 호출할 수 있는 권한이 있습니다. 인증된 요청은 권한 부여 정보를 포함하지 않아도 됩니다.

인증된 사용자는 secret 쿼리 매개변수의 값으로 특정 string 을 포함하여 엔드포인트를 호출할 권한이 있음을 증명해야 합니다.

시크릿의 string 을 정의하고 엔드포인트 구성에서 이름으로 시크릿 을 참조합니다.

http_endpoints/config.json
[
{
...,
"verification_method": "SECRET_AS_QUERY_PARAM",
"secret_name": "secret_verification_string"
}
]

요청 에 시크릿을 포함하는 방법을 학습 보려면 요청 승인하기를 참조하세요.

인증된 사용자는 요청 본문에서 생성된 16진수로 인코딩된 HMAC SHA-256 해시와 시크릿 string 이 포함된 Endpoint-Signature 헤더를 포함하여 엔드포인트를 호출할 권한이 있음을 증명해야 합니다.

시크릿의 string 을 정의하고 엔드포인트 구성에서 이름으로 시크릿 을 참조합니다.

요청에 서명하는 방법을 학습 보려면 요청 승인을 참조하세요.

사용자 지정 권한 부여 표현식을 정의하여 인증된 수신 요청을 실행할 수 있는지 여부를 결정할 수 있습니다. 표현식은 각 요청에 대해 평가되며 요청을 허용하려면 true로 평가되어야 합니다. 표현식이 false로 평가되면 요청이 승인되지 않고 오류와 함께 실패합니다. 권한 부여에 실패한 요청은 앱 청구 사용량에 포함되지 않습니다.

권한 부여 표현식은 %%user 등의 변수를 사용하여 호출 중인 사용자의 데이터를 기준으로 권한을 부여하거나, %%request 등의 변수를 사용하여 각 수신 요청의 세부 사항을 기준으로 결정을 내릴 수 있습니다.

사용자 지정 권한 부여 체계를 정의하려면 엔드포인트 함수 구성에서 표현식을 지정합니다.

http_endpoints/config.json
[
{
...,
"can_evaluate": {
"%%request.requestHeaders.x-secret-key": "my-secret"
}
}
]

모든 사용자 지정 엔드포인트는 엔드포인트가 수신 요청을 받을 때마다 실행되는 함수와 연결되어 있습니다. 이 함수에서는 npm에서 라이브러리를 가져오고, 연결된 MongoDB Atlas 클러스터에 연결하고, 다른 서버리스 함수를 호출할 수 있습니다.

App Services UI에서 엔드포인트를 생성 할 때 새 함수를 정의하려면 Function 섹션으로 이동하여 드롭다운에서 + New Function을(를) 선택합니다.

워크플로에 따라 엔드포인트 핸들러 함수를 정의하고 편집할 수도 있습니다.

엔드포인트 함수는 항상 다음과 같은 2개 인수를 받습니다.

  • 수신 요청 헤더, 쿼리 매개변수 및 본문 데이터에 액세스할 수 있는 요청 객체입니다.

  • 호출자에게 다시 전송되는 HTTPS 응답을 구성하는 데 사용하는 응답 객체입니다.

샘플 함수, 요청과 응답 예시는 예시를 참조하세요.

사용자 지정 엔드포인트 Request 객체는 해당 엔드포인트를 호출한 HTTP 요청을 나타냅니다. 사용자는 수신 요청의 헤더, 쿼리 매개변수 및 본문 데이터에 액세스할 수 있습니다.

엔드포인트 요청 객체
{
"headers": { "<Header>": ["<Header Value>"] },
"query": { "<Query Parameter>": "<Parameter Value>" },
"body": <BSON.Binary>
}
필드
설명
query

각 필드가 URL 쿼리 매개변수를 해당 값에 매핑하는 객체입니다. 쿼리 문자열에서 키가 여러 번 사용되는 경우 이 객체에는 처음 나타나는 항목만 표시됩니다. 전체 쿼리 문자열로 작업하려면 context.request.rawQueryString을 사용합니다.

예시

다음 query 객체는 쿼리 문자열 ?regions=na,eu&currency=USD를 나타냅니다.

{
"regions": "na&eu",
"currency": "USD"
}
headers

각 필드가 요청 헤더 이름을 하나 이상의 값 배열에 매핑하는 객체입니다.

예시

{
"Content-Type": ["application/json"],
"Accept": ["application/json"],
"X-CustomHeader": ["some-value", "some-other-value"]
}
body

요청 본문을 포함하는 BSON.Binary 객체입니다. 요청에 본문이 포함되지 않은 경우 이 값은 undefined입니다.

요청 본문의 데이터에 액세스하려면 바이너리를 직렬화해야 합니다.

// Convert the request body to a JSON string
const serialized = request.body.text();
// Parse the string into a usable object
const body = JSON.parse(serialized);

사용자 지정 엔드포인트 Response 객체를 사용하면 호출자에게 다시 전송되는 HTTPS 응답을 구성할 수 있습니다. 상태 코드를 설정하고, 헤더를 사용자 지정하고, 응답 본문에 데이터를 포함할 수 있습니다.

메서드
설명
setStatusCode(code)
- code: number

HTTP 응답 상태 코드를 설정합니다.

예시

response.setStatusCode(201);
setBody(body)
- body: string | BSON.Binary

HTTP 응답 본문을 설정합니다.

body가 문자열인 경우, 엔드포인트는 문자열을 자동으로 BSON.Binary로 인코딩합니다.

예시

response.setBody(
"{'message': 'Hello, World!'}"
);
setHeader(name, value)
- name: string
- value: string

name으로 지정된 HTTP 응답 헤더value 인수에 전달된 값으로 설정합니다. 이렇게 하면 해당 헤더에 이미 할당되었을 수 있는 다른 모든 값이 재정의됩니다.

예시

response.setHeader(
"Content-Type",
"application/json"
);
addHeader(name, value)
- name: string
- value: string

name으로 지정된 HTTP 응답 헤더value 인수에 전달된 값으로 설정합니다. setHeader와 달리 이는 헤더에 이미 할당된 다른 값을 재정의하지 않습니다.

예시

response.addHeader(
"Cache-Control",
"max-age=600"
);
response.addHeader(
"Cache-Control",
"min-fresh=60"
)

수신 POST 요청의 본문을 구문 분석하고, 구문 분석된 본문을 MongoDB 컬렉션에 저장한 다음 호출자에게 응답하는 엔드포인트 함수가 있다고 가정해 보겠습니다.

exports = async function MyCustomEndpoint(request, response) {
try {
// 1. Parse data from the incoming request
if (request.body === undefined) {
throw new Error(`Request body was not defined.`);
}
const body = JSON.parse(request.body.text());
// 2. Handle the request
const { insertedId } = await context.services
.get("mongodb-atlas")
.db("myDb")
.collection("myCollection")
.insertOne({ date: new Date(), requestBody: body });
// 3. Configure the response
response.setStatusCode(201);
// tip: You can also use EJSON.stringify instead of JSON.stringify.
response.setBody(
JSON.stringify({
insertedId,
message: "Successfully saved the request body",
})
);
} catch (error) {
response.setStatusCode(400);
response.setBody(error.message);
}
};

이 함수는 다음과 같은 POST 요청을 수신합니다.

curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/custom" \
-X POST \
-H "Accept: application/json" \
-H "apiKey: TpqAKQgvhZE4r6AOzpVydJ9a3tB1BLMrgDzLlBLbihKNDzSJWTAHMVbsMoIOpnM6" \
-d '{
"type": "event",
"date": "2024-01-01T00:00:00.000Z",
"name": "New Year Begins",
"comment": "Happy New Year!"
}'
{
"message": "Successfully saved the request body",
"insertedId": "639a521bbdec9b85ba94014b"
}

이 함수가 수신 요청의 본문이 정의되었는지 확인한 후, 구문 분석된 본문은 myCollection(이)라는 이름의 컬렉션에 새 문서로 저장됩니다. 결과 출력에는 구성된 응답(사용자 지정 메시지 및 insertedId 포함)이 표시됩니다.

모든 표준 HTTPS 클라이언트에서 사용자 지정 엔드포인트를 호출할 수 있습니다.

curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/hello" \
-X POST \
-H "Accept: application/json" \
-H "apiKey: TpqAKQgvhZE4r6AOzpVydJ9a3tB1BLMrgDzLlBLbihKNDzSJWTAHMVbsMoIOpnM6" \
-d '{
"name": "Casey"
}'

요청 시 HTTP/1.1 이상이 필요합니다.

요청에는 응답 본문에 대한 특정 데이터 형식(JSON 또는 EJSON)을 요청하기 위한 Accept 헤더가 포함될 수 있습니다. 요청에 유효한 Accept 헤더가 포함되어 있지 않으면 응답은 엔드포인트 구성에 지정된 기본 데이터 형식을 사용합니다.

curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/hello/latest" \
-X GET \
-H "Accept: application/ejson" \
-H "apiKey: TpqAKQgvhZE4r6AOzpVydJ9a3tB1BLMrgDzLlBLbihKNDzSJWTAHMVbsMoIOpnM6"
{
"greeting": "Hello, Leafie!",
"date": { "$date": { "$numberLong": "1654589430998" } }
}
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/hello/latest" \
-X GET \
-H "Accept: application/json" \
-H "apiKey: TpqAKQgvhZE4r6AOzpVydJ9a3tB1BLMrgDzLlBLbihKNDzSJWTAHMVbsMoIOpnM6"
{
"greeting": "Hello, Leafie!",
"date": "2022-06-07T08:10:30.998Z"
}

엔드포인트가 Application Authentication(애플리케이션 인증)을 사용하도록 구성된 경우, 모든 요청에 유효한 사용자 액세스 토큰 또는 로그인 자격 증명을 포함시켜야 합니다.

액세스 토큰을 이용한 베어러 인증은 일반적으로 처리량이 더 높고 자격 증명 헤더보다 안전합니다. 가능하다면 자격 증명 헤더 대신 액세스 토큰을 사용하세요. 이 토큰을 사용하면 사용자를 재인증하지 않고도 여러 요청을 실행할 수 있습니다. 이외에 CORS를 실행하는 웹 브라우저에서 요청을 보낼 수도 있습니다.

액세스 토큰을 사용하려면 먼저 App Services 인증 제공자를 통해 사용자를 인증하세요. 그런 다음 App Services에서 반환된 액세스 토큰을 가져오고, Bearer(베어러) 토큰 체계를 이용하여 요청의 권한 부여 헤더에 이 토큰을 입력하세요. 액세스 토큰의 획득 및 사용 방법에 대한 자세한 내용은 Bearer Token Authentication(베어러 토큰 인증)을 참조하세요.

curl -X GET \
-H 'Authorization: Bearer <AccessToken>' \
-H 'Content-Type: application/json' \
https://data.mongodb-api.com/app/myapp-abcde/endpoint/hello

또는 요청 헤더에 사용자의 유효한 로그인 자격 증명을 포함할 수 있습니다.

curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/hello" \
-X POST \
-H "Accept: application/json" \
-H "email: bob@example" \
-H "password: Pa55w0rd!" \
-d '{ "name": "Bob" }'
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/hello" \
-X POST \
-H "Accept: application/json" \
-H "apiKey: TpqAKQgvhZE4r6AOzpVydJ9a3tB1BLMrgDzLlBLbihKNDzSJWTAHMVbsMoIOpnM6" \
-d '{ "name": "Alice" }'
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/hello" \
-X POST \
-H "Accept: application/json" \
-H "jwtTokenString: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZXN0LWN1c3RvbS1lbmRwb2ludHMtZWhtenQiLCJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoyMTQ1OTE2ODAwfQ.pIMvnXWrcDvmPzmE33ZPrwkBAFSwy-GxW8sP-qLtYiw" \
-d '{ "name": "Carlos" }'

중요

사용자 대상 클라이언트에서 API 키를 사용하지 마세요

브라우저 또는 다른 사용자용 클라이언트 애플리케이션에서 인증하는 경우 API 키를 사용하여 로그인하지 않도록 합니다. 대신 사용자가 제공한 자격 증명을 사용하는 다른 인증 제공자를 사용합니다. API 키나 기타 민감한 자격 증명을 로컬에 저장하지 마세요.

엔드포인트 구성에 따라 요청에 추가 권한 부여 정보를 포함해야 할 수도 있습니다.

모든 인증 사용자는 엔드포인트를 호출할 수 있는 권한이 있습니다. 인증된 요청은 권한 부여 정보를 포함하지 않아도 됩니다.

인증된 사용자는 엔드포인트의 시크릿 string 을 secret 쿼리 매개변수의 값으로 포함하여 엔드포인트를 호출할 권한이 있음을 증명해야 합니다.

예시

다음 curl 요청 은 시크릿 string "Super5ecr3tPa55w0rd"과 함께 시크릿 쿼리 매개변수 유효성 검사 를 사용합니다.

curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/passwordRequired?secret=Super5ecr3tPa55w0rd" \
-X GET \
-H "Accept: application/json" \
-H "apiKey: TpqAKQgvhZE4r6AOzpVydJ9a3tB1BLMrgDzLlBLbihKNDzSJWTAHMVbsMoIOpnM6" \
-d '{ "data": "VGhpcyBpcyBzb21lIGRhdGEgdGhhdCB3YXMgZW5jb2RlZCBhcyBhIEJhc2U2NCBBU0NJSSBzdHJpbmc=" }'

인증된 사용자는 요청 본문에서 생성된 16진수로 인코딩된 HMAC SHA-256 해시와 엔드포인트의 시크릿 string 이 포함된 Endpoint-Signature 헤더를 포함하여 엔드포인트를 호출할 권한이 있음을 증명해야 합니다.

Endpoint-Signature: sha256=<hex encoded hash>

다음 함수를 사용하여 페이로드 서명을 생성할 수 있습니다.

/**
* Generate an HMAC request signature.
* @param {string} secret - The secret validation string, e.g. "12345"
* @param {object} body - The endpoint request body e.g. { "message": "MESSAGE" }
* @returns {string} The HMAC SHA-256 request signature in hex format.
*/
exports = function signEndpointRequest(secret, body) {
const payload = EJSON.stringify(body);
return utils.crypto.hmac(payload, secret, "sha256", "hex");
};

예시

다음 curl 요청 에는 시크릿 값 Super5ecr3tPa55w0rd 로 서명된 페이로드 서명 헤더가 포함되어 있습니다.

curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/sendMessage" \
-X POST \
-H "Accept: application/json" \
-H "apiKey: TpqAKQgvhZE4r6AOzpVydJ9a3tB1BLMrgDzLlBLbihKNDzSJWTAHMVbsMoIOpnM6" \
-H "Endpoint-Signature: sha256=d4f0537db4e230d7a6028a6f7c3bb1b57c9d16f39176d78697e559ac333e0b36" \
-d '{ "message": "Hello!" }'

돌아가기

데이터 API 엔드포인트 [사용 중단됨]