매우 안전한 클라우드 기능이 필요하므로 이를 API 게이트웨이 뒤에 배치하려고 합니다. 헤더에 Bearer 토큰을 직접 전달하여 함수를 호출하면 함수가 제대로 작동합니다.
https://us-central1-<my-project>.cloudfunctions.net/<my-hello-function>
그러나 API 게이트웨이를 통해 API 토큰과 함께 사용할 수 있도록 허용하고 싶습니다(그런 다음 "안녕하세요"라고 말하는 것보다 더 유용한 작업을 수행합니다).
https://my-gateway-xxxxxxxx.uc.gateway.dev/v1/stats&key=<my-API-token>
내가 전화하려고하면 다음과 같은 결과가 나타납니다.
{ "code": 404, "message": "경로가 요구사항 URI 템플릿과 일치하지 않습니다." }
내 API 게이트웨이 구성 파일:
swagger: "2.0"
info:
title: my-gateway
version: "1.0.0"
basePath: "/v1"
schemes:
- "https"
produces:
- application/json
paths:
/stats:
get:
tags:
- "stats"
summary: "get service stats"
description: "Returns statistics"
operationId: "hello_world"
#produces:
#- "application/json"
parameters:
- name: "since"
in: "header"
description: "Date to retrieve information"
required: false
type: "string"
format: "date"
x-google-backend:
address: https://us-central1-<my-project>.cloudfunctions.net/<my-hello-function>
path_translation: CONSTANT_ADDRESS
protocol: h2
responses:
"200":
description: "successful operation"
schema:
$ref: "#"
"400":
description: "Invalid datetime supplied"
"404":
description: "Unknown path"
security:
- api_key: []
securityDefinitions:
api_key:
type: "apiKey"
name: "api_key"
in: "query"
definitions:
ApiResponse:
type: "object"
properties:
code:
type: "integer"
format: "int32"
type:
type: "string"
message:
type: "string"
무엇이 빠졌나요? 내가 도대체 뭘 잘못하고있는 겁니까?
답변1
당신이 잘 지내기를 바랍니다.
저는 전문가는 아니지만 문서를 읽고 스니펫을 다시 확인한 후에 URL에서 사용하는 것이 in이 아닌 name
in 이 securityDefinitions
되어야 하지 않나요?key
api_key
내-게이트웨이-xxxxxxxx.uc.gateway.dev/v1/stats&열쇠=<내-API-토큰>
답변2
API 키를 URL을 통해 전달하여 사용하려면 쿼리 매개변수로 보내야 하는데, 보내는 방식은 stats&key=
통계 대신 이름이 지정된 경로에 들어가려는 것과 같습니다.
귀하의 URL은 다음과 같아야 합니다.
https://my-gateway-xxxxxxxx.uc.gateway.dev/v1/stats?key=<my-API-token>
교체&키 매개변수에?