#google-cloud-platform #yaml #openapi #google-cloud-api-gateway
#google-cloud-platform #yaml #openapi #google-cloud-api-gateway
Вопрос:
Я изо всех сил пытаюсь передать параметры пути от моего шлюза к фактическим конечным точкам.
Вот мой открытый API yaml:
swagger: '2.0'
info:
description: |
Blah blah
version: 0.0.1
title: SSAuth
contact:
email: blah@gmail.com
schemes:
- https
produces:
- application/json
paths:
/v0/auth/users/echo:
get:
summary: check the health of api
operationId: healthCheck
consumes:
- application/json
produces:
- application/json
responses:
200:
description: OK
x-google-backend:
address: https://path-to-my-cloud-run-service/v0/auth/users/echo
security:
- api_key: []
/v0/auth/users/type/{type}:
post:
summary: Add a new user to the user
operationId: addUser
consumes:
- application/json
produces:
- application/json
parameters:
- name: type
in: path
description: provider type of the user
required: true
type: string
responses:
400:
description: Invalid input
200:
description: OK
x-google-backend:
address: https://path-to-my-cloud-run-service/v0/auth/users/type/`type`
security:
- api_key: []
securityDefinitions:
api_key:
type: apiKey
name: X-API-Key
in: header
Когда я ПОЛУЧАЮ первый путь, он работает. Но во втором пути есть параметр path, который я не могу найти способ передать в params на мой URL-адрес для запуска в облаке. В журнале я вижу это https://path-to-my-cloud-run-service/v0/auth/users/type/`type`?type=email
вместо https://path-to-my-cloud-run-service/v0/auth/users/type/email
, и это приводит к отклонению моей службы из-за недопустимого типа.
Что мне нужно изменить в моем yaml, чтобы это заработало?
Другая проблема, с которой я сталкиваюсь, заключается в том, что запрос GET получает 400 неверных запросов, если я помещаю json в тело, даже если я указываю, что он использует application / json.
Ответ №1:
Нашел решение после поиска здесь.
Это path_transaltion, вот рабочий yaml:
swagger: '2.0'
info:
description: |
Blahblah
version: 0.0.1
title: Title
contact:
email: blah@gmail.com
schemes:
- https
produces:
- application/json
paths:
/v0/auth/users/echo:
get:
summary: check the health of api
operationId: healthCheck
consumes:
- application/json
produces:
- application/json
responses:
200:
description: OK
x-google-backend:
address: https://path-to-my-service
path_translation: APPEND_PATH_TO_ADDRESS
security:
- api_key: []
/v0/auth/users/type/{type}:
post:
summary: Add a new user to the user
operationId: addUser
consumes:
- application/json
produces:
- application/json
parameters:
- name: type
in: path
description: provider type of the user
required: true
type: string
responses:
400:
description: Invalid input
200:
description: OK
x-google-backend:
address: https://path-to-my-service
path_translation: APPEND_PATH_TO_ADDRESS
security:
- api_key: []
securityDefinitions:
api_key:
type: apiKey
name: X-API-Key
in: header
Комментарии:
1. вы пробовали использовать метод PUT и DELETE? Я всегда получаю
Cannot PUT /users/{user-id}
ошибку2. Да, мое удаление работает, и я объявил его так же, как GET
3. Именно то, что я ищу. Это работает и для меня. Спасибо.