WedX - журнал о программировании и компьютерных науках

AWS API Gateway несколько методов POST для одного ресурса

Я пытаюсь создать API с помощью AWS API Gateway и AWS Lambda, который имеет один ресурс, но несколько действий, которые можно выполнить с этим ресурсом через POST, аналогично тому, как Google создал свое Natural Language API, например:

POST https://language.googleapis.com/v1/documents:analyzeEntities
POST https://language.googleapis.com/v1/documents:analyzeEntitySentiment
POST https://language.googleapis.com/v1/documents:analyzeSentiment
...

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


Ответы:


1

Это зависит от того, насколько важно для вас следовать схеме, которую вы описываете в своем вопросе. Ключевая проблема заключается в том, что API Gateway не позволяет использовать двоеточие : в имени вашего ресурса.


Если не важно следовать схеме

Подумайте о том, чтобы сделать вашу схему API более REST-ориентированной.

Возможно, вместо того, чтобы выполнять analyzeEntities действие с documents, считайте, что ваши запросы на анализ документов сами по себе являются ресурсами, которые можно создать ...

e.g:

POST /documents/analyzeRequest[s]
(where body describes the type of request)

or

POST /documents/analyzeEntitiesRequest[s]

Это позволит вам добавить GET позже, чтобы перечислить предыдущие / текущие запросы.


Если важно соблюдать схему

Итак, указание : в пути к вашему ресурсу приводит к ошибке:

Часть пути ресурса допускает только a-zA-Z0-9 ._- и фигурные скобки в начале и в конце.

Чтобы решить эту проблему, создайте новый ресурс и установите флажок Configure as proxy resource. Создание прокси-ресурса позволяет отложить принятие решения о маршрутизации до лямбда-функции для любого пути, который соответствует правилу.

например ANY /{proxy+} будет соответствовать всем запросам.

Примечание. Если вы затем добавили отдельный ресурс GET /foo, ваш прокси-ресурс не будет обрабатывать GET /foo, поскольку теперь существует более конкретное правило.

Итак, с настроенным прокси-ресурсом вам нужно будет написать лямбда, которая вызывает соответствующую лямбда-функцию на основе ваших правил маршрутизации.

04.04.2018
  • Отличный ответ, спасибо! Я думал о первом решении, но оно, похоже, не соответствует лучшим практикам REST, поскольку в нем используются глаголы для ресурсов. Я попробую описанное вами решение для использования прокси-ресурсов. 04.04.2018
  • В первом решении analyseRequest - существительное. Это просьба проанализировать. Вы также можете думать об этом как о добавлении задачи в очередь обработки. Сервер приступит к его обработке, а затем вы сможете ПОЛУЧИТЬ эту задачу по идентификатору, чтобы определить ее статус / результаты. 04.04.2018
  • Другой вариант, если вы прочитаете этот ответ: stackoverflow.com/a/19650279/242311, другой вариант - опубликовать свой document [s] на что-то вроде / documents-being-analysis. Просто еще один способ осмыслить это. 04.04.2018
  • @NicholasSizer, не могли бы вы помочь мне с этим вариантом использования stackoverflow.com/questions/62871941/ 14.07.2020
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]