함수 호출
JavaScript SDK 또는 HTTP를 통해 배포된 함수를 호출하는 방법과 함수에서 호출자가 누구인지 아는 방법입니다.
1. SDK에서 호출
invoke는 공개 키가 할 수 있는 유일한 호출입니다. 브라우저와 서버에서 동일하게 작동합니다.
일반 invoke<T>는 응답만 입력합니다. 이름과 본문은 컴파일 타임에 확인되지 않습니다.
list, get, listJobs, enqueueJob and the other management methods need a service_role key and belong on your server. A public key receives 403. See who can call what.
2. 요청 내용을 설명하세요.
귀하의 함수는 주변 래퍼가 아닌 귀하가 설명하는 요청을 정확하게 수신합니다.
| 옵션 | 기본값 | 함수가 보는 것 |
|---|---|---|
method | POST | req.method |
path | / | new URL(req.url).pathname |
headers | 없음 | req.headers, 아래 나열된 플랫폼 헤더 제외 |
body | 없음 | await req.json()(또는 문자열의 경우 req.text()) |
timeout | 클라이언트 기본값(30초) | 보이지 않음: 통화를 취소합니다. |
signal | 없음 | 보이지 않음: 통화를 취소합니다. |
responseType | 'json' | 표시되지 않음: SDK가 응답을 디코딩하는 방법은 JSON이 아닌 응답을 참조하세요. |
알아두면 좋은 규칙:
GET및HEAD은 본문 없이 전송됩니다.- 문자열이 아닌 본문은 별도로 설정하지 않는 한
content-type: application/json와 함께 JSON으로 전송됩니다. 문자열 본문은 있는 그대로 전송되고content-type: application/json도 가져오므로req.text()로 읽으세요. body이 없으면 함수는 본문 없이 요청을 받습니다. 베어await req.json()가 발생하므로 페이로드 없이 호출이 이루어질 수 있으면await req.json().catch(() => ({}))를 작성하세요.- 본문은 JSON(객체, 배열, 문자열, 숫자 또는 부울)이어야 합니다.
Blob,ArrayBuffer, 형식화된 배열FormData,URLSearchParams또는ReadableStream는 요청이 전송되기 전에 오류 코드invalid_body와 함께 거부됩니다. - 프레이밍 헤더(
content-length,transfer-encoding,connection,host, …)는 무시됩니다.
3. 발신자의 신원을 읽으십시오
플랫폼은 함수가 실행되기 전에 키와 사용자 토큰의 유효성을 검사한 후 다음 헤더를 추가합니다.
| 헤더 | 가치 |
|---|---|
x-aura-role | anon, authenticated 또는 service_role |
x-aura-user-id | x-aura-role이 authenticated일 때 사용자 ID, 그렇지 않으면 없음 |
x-aura-project-id | 프로젝트 ID |
authorization | 사용자의 JWT, 로그인한 사용자에게만 해당 |
apikey | 통화에 사용되는 키 |
세 가지 다른 키를 사용한 이 호출의 실제 결과는 다음과 같습니다.
플랫폼은 호출자가 headers에 넣는 authorization, apikey, x-request-id 및 모든 x-aura-* 헤더를 경우에 관계없이 삭제합니다. 자체적으로 검증된 값만 함수에 도달합니다. 다른 사용자 정의 헤더는 변경되지 않고 통과됩니다.
호출의 x-request-id은 함수로 전달되지 않습니다. 호출을 로그 라인과 연관시키려면 자신의 ID를 생성하고 이를 headers로 전송한 후 함수에 기록하십시오.
4. HTTP를 통해 호출
SDK가 없으면 요청을 설명하는 JSON 개체를 보냅니다. body 필드는 함수가 수신하는 필드입니다.
apikey 및 Content-Type: application/json이 모두 필요합니다. 로그인한 사용자로 호출하려면 Authorization: Bearer <user JWT>를 추가하세요. 기본 응답은 봉투입니다. X-Aurabase-Invoke-Mode: raw 헤더는 대신 함수의 자체 응답을 반환합니다. 비 JSON 응답을 참조하세요.
5. 결과 읽기
invoke는 절대 던지지 않습니다. { data, error }를 반환합니다.
값이 필요할 때 error 대신 data를 테스트합니다. TypeScript는 값이 null이 아니라는 것을 알 수 있습니다. 오류를 정확하게 처리하려면 오류, 시간 초과 및 재시도를 읽어보세요.