Я создал простое определение шлюза API в OpenApi3:
openapi: "3.0.1"
info:
title: "FooApi"
version: "2018-12-20T16:48:35Z"
servers:
- url: "https://<id>.execute-api.us-east-1.amazonaws.com/{basePath}"
variables:
basePath:
default: "/test"
paths:
/foo:
get:
responses:
200:
description: "200 response"
content:
application/json:
schema:
$ref: "#/components/schemas/Foo"
x-amazon-apigateway-integration:
responses:
default:
statusCode: "200"
responseTemplates:
application/json: "{\"bar\": 123,\"baz\": 456}"
requestTemplates:
application/json: "{\"statusCode\": 200}"
passthroughBehavior: "when_no_match"
type: "mock"
components:
schemas:
Foo:
required:
- "bar"
type: "object"
properties:
bar:
type: "integer"
format: "int32"
additionalProperties: false
Я ожидаю, что здесь что-то не получится, потому что возвращаемый объект не соответствует схеме (модели), указанной для него (есть дополнительное свойство, которое явно запрещено схемой). Однако этого не происходит - он возвращает объект с дополнительным свойством.
Я не могу найти способ включить проверку ответа или что-то подобное в API Gateway, поэтому мои вопросы:
- Есть ли способ сделать это, что я пропустил?
- Что может быть еще одним подходящим способом для достижения этой цели? Я знаю, что это можно сделать в вызываемом сервисе, но это не позволяет мне проверить, что вызываемый сервис находится в шаговой доступности с API, что я и хочу сделать.