Serverless: События APIG теперь заставляют использовать как json-шаблоны, так и шаблоны с URL-адресом формы.

Созданный на 1 сент. 2016  ·  3Комментарии  ·  Источник: serverless/serverless

Это предложение функции

Описание

При определении HTTP-событий APIG код теперь принудительно создает сопоставления как для application/json так и для application/x-www-form-urlencoded . Хотя вы можете переопределить шаблон, нет способа исключить эти сопоставления (т. Е. Я хочу разрешить только json-запросы на конечной точке)

Это изменение было недавно внесено посредством этой фиксации в lib / plugins / aws / deploy / compile / events / apiGateway / lib / methods.js :

const integrationRequestTemplates = {
  'application/json': DEFAULT_JSON_REQUEST_TEMPLATE,
  'application/x-www-form-urlencoded': DEFAULT_FORM_URL_ENCODED_REQUEST_TEMPLATE,
};

Хотя я считаю невероятно полезным иметь эти 2 варианта (и предварительно определенные шаблоны), я думаю, что было бы лучше позволить пользователю при желании включать только те шаблоны, которые он хочет.

Что-то вроде следующего может иметь смысл:

functions:
  create:
    handler: posts.create
    events:
      - http:
          method: get
          path: whatever
          request:
            template:
              text/xhtml: { "stage" : "$context.stage" }   # add additional template
              application/json: { "httpMethod" : "$context.httpMethod" }  # add mapping and override default template
              application/x-www-form-urlencoded: true    # add mapping and use default template 

С текущей открытой проблемой (# 1168), связанной с поведением прохождения APIG, и ожидающим PR (# 1992) для ее решения, становится более важным иметь возможность полностью ограничить методы желаемыми типами контента.

Самый полезный комментарий

Мне определенно нравится идея возможности действительно заблокировать шаблоны по умолчанию, но имхо это должно произойти для всей службы.

Я предполагаю, что если вы хотите полностью заблокировать шаблоны по умолчанию, вы захотите сделать это во всех методах вашей службы. Так что я бы предпочел что-то вроде

provider:
  apigateway:
    default-request-templates: false

В противном случае вам пришлось бы дублировать конфигурацию как сумасшедшую (что уже необходимо, например, когда вы хотите установить отдельные шаблоны для нескольких функций, но, по-моему, это не проблема, потому что вам это нужно только для событий, которые имеют данные запроса.

Но пока не уверен: D. @ serverless / vip есть какие-нибудь мысли по этому поводу , особенно

Все 3 Комментарий

Мне определенно нравится идея возможности действительно заблокировать шаблоны по умолчанию, но имхо это должно произойти для всей службы.

Я предполагаю, что если вы хотите полностью заблокировать шаблоны по умолчанию, вы захотите сделать это во всех методах вашей службы. Так что я бы предпочел что-то вроде

provider:
  apigateway:
    default-request-templates: false

В противном случае вам пришлось бы дублировать конфигурацию как сумасшедшую (что уже необходимо, например, когда вы хотите установить отдельные шаблоны для нескольких функций, но, по-моему, это не проблема, потому что вам это нужно только для событий, которые имеют данные запроса.

Но пока не уверен: D. @ serverless / vip есть какие-нибудь мысли по этому поводу , особенно

Теперь это должно быть возможно: https://serverless.com/framework/docs/providers/aws/events/apigateway#custom -request-templates

@flomotlik Как настраиваемые шаблоны application/x-www-form-urlencoded по умолчанию без необходимости создавать настраиваемый шаблон для application/json ?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги