AWS Gateway — это мощный инструмент для создания API, которые масштабируются в соответствии с требованиями современных веб-приложений и мобильных приложений. С помощью AWS Gateway вы можете создавать RESTful API, которые предоставляют ваши данные и бизнес-логику разработчикам, которые затем могут создавать многофункциональные интерактивные приложения, использующие ваш API.

REST API — это отраслевой стандарт для создания масштабируемых распределенных веб-приложений. С помощью AWS Gateway вы можете легко создать REST API, который поддерживает методы GET и POST, а также сложные параметры запроса. Вы также можете добавить поддержку других методов HTTP, таких как PUT, DELETE и HEAD.

Используя AWS Gateway, вы можете быстро создавать безопасные и надежные API. Вы также можете использовать его для развертывания своего кода в производственной среде с минимальными усилиями. Кроме того, AWS Gateway обеспечивает простую интеграцию с другими сервисами AWS, такими как S3 и DynamoDB, что позволяет легко добавлять сложные функции в API.

Предпосылки

Прежде чем создавать RESTful API с AWS Gateway, необходимо подготовить следующее:

  • Нажмите «Создать API» и выберите «REST API».

  • Нажмите «Действия», определите ресурс и нажмите «Создать ресурс».

  • Выберите только что созданный ресурс и нажмите «Создать метод».

  • Выберите глагол HTTP (например, GET, POST, PUT и т. д.) и нажмите на галочку, чтобы создать метод.
  • В разделе «Тип интеграции» выберите «Лямбда-функция» и введите имя лямбда-функции, которую вы хотите использовать для обработки запросов API.
  • Нажмите «Сохранить», чтобы создать API.

-Выберите узел из раскрывающегося списка времени выполнения.

Пример кода

import json
Example data
data = {
"items": [
{"id": 1, "name": "Item 1", "price": 10.99},
{"id": 2, "name": "Item 2", "price": 15.99},
{"id": 3, "name": "Item 3", "price": 20.99},
]
}
def lambda_handler(event, context):
# Determine the HTTP method of the request
http_method = event["httpMethod"]
# Handle GET request
if http_method == "GET":
# Return the data in the response
response = {
"statusCode": 200,
"body": json.dumps(data)
}
return response
# Handle POST request
elif http_method == "POST":
    # Retrieve the request's body and parse it as JSON
    body = json.loads(event["body"])
    # Add the received data to the example data
    data["items"].append(body)
    # Return the updated data in the response
    response = {
        "statusCode": 200,
        "body": json.dumps(data)
    }
    return response
# Handle PUT request
elif http_method == "PUT":
    # Retrieve the request's body and parse it as JSON
    body = json.loads(event["body"])
    # Update the example data with the received data
    for item in data["items"]:
        if item["id"] == body["id"]:
            item.update(body)
            break
    # Return the updated data in the response
    response = {
        "statusCode": 200,
        "body": json.dumps(data)
    }
    return response
     # Handle DELETE request
elif http_method == "DELETE":
    # Retrieve the request's body and parse it as JSON
    body = json.loads(event["body"])
    # Find the item with the specified id in the example data
    for i, item in enumerate(data["items"]):
        if item["id"] == body["id"]:
            # Remove the item from the example data
            del data["items"][i]
            break
    # Return the updated data in the response
    response = {
        "statusCode": 200,
        "body": json.dumps(data)
    }
    return response
else:
    # Return an error message for unsupported methods
    response = {
        "statusCode": 405,
        "body": json.dumps({"error": "Method not allowed"})
    }
    return response`

Этот код определяет лямбда-функцию lambda_handler, которая обрабатывает различные типы HTTP-запросов (GET, POST, PUT, DELETE) для некоторых данных. Данные представляют собой объект, содержащий массив элементов, каждый элемент имеет идентификатор, имя и цену.

Когда функция вызывается, она сначала определяет HTTP-метод запроса от объекта события. Затем он обрабатывает запрос соответствующим образом:

  • GET: возвращает данные в ответе с кодом состояния 200.
  • POST: извлекает тело запроса и анализирует его как JSON, затем добавляет полученные данные к данным примера, затем возвращает обновленные данные в ответе с кодом состояния 200.
  • PUT: извлекает тело запроса и анализирует его как JSON, затем обновляет данные примера полученными данными, затем возвращает обновленные данные в ответ с кодом состояния 200.
  • DELETE: извлекает тело запроса и анализирует его как JSON, затем находит элемент с указанным идентификатором в данных примера и удаляет его, затем возвращает обновленные данные в ответе с кодом состояния 200.
  • Если метод не поддерживается, он вернет сообщение об ошибке с кодом состояния 405.

Разверните API, нажав «Действия» и выбрав «Развернуть API».

Выберите этап развертывания (например, «prod» или «test») и нажмите «Deploy». Используйте сгенерированную конечную точку API для выполнения запросов к вашему API.

Запуск и тестирование кода в Postman

Теперь наш API запущен и работает. Вы можете отправить тестовый HTTP-запрос через Postman. Отправив запрос на URL-адрес вызова, вы должны увидеть код состояния 200 OK. Для этого теста тело запроса не требуется для входящего запроса.

Подведение итогов

При этом мы создали простой RESTful API с использованием AWS Lambda и Python. Этот код может служить основой для создания более сложных API для вашего приложения. Продолжая разработку API, вы можете рассмотреть возможность реализации мер безопасности, таких как ключ API, интеграция со шлюзом API, мониторинг использования API или получение дохода за счет монетизации API. Если вы заинтересованы в изучении возможностей аналитики и монетизации API, посетите Moesif.