与AWS Gateway和Python建立REST API
#aws #教程 #python #休息

aws网关是构建API的强大工具,可扩展满足现代网络和移动应用程序的需求。借助AWS网关,您可以创建RESTFUL API,以将您的数据和业务逻辑揭示到可以构建可消耗API的丰富,交互式应用程序的开发人员。

REST API是构建可扩展的,分布式Web应用程序的行业标准。使用AWS网关,您可以轻松构建支持GET和POST方法的REST API以及复杂的查询参数。您还可以添加对其他HTTP方法的支持,例如put,delete和head。

使用AWS网关,您可以快速创建安全且坚固的API。您也可以使用它以最小的努力将代码部署到生产环境中。此外,AWS网关允许与其他AWS服务(例如S3和DynamoDB)无缝集成,使您可以轻松地在API中添加复杂的功能。

先决条件

在使用AWS网关构建静止的API之前,您应该拥有以下内容:

  • Create an AWS account如果您还没有一个。
  • 登录到AWS管理控制台并导航到Amazon API网关服务。

Image description

  • 单击创建API,然后选择REST API。

Image description

Image description

  • 单击“操作”并定义资源,然后单击“创建资源”。

Image description

  • 选择新创建的资源,然后单击创建方法。

Image description

Image description

  • 选择http动词(例如获取,发布,放置等),然后单击检查标记以创建方法。

  • 在“集成类型”部分中,选择“ lambda函数”,然后输入要使用API​​请求的lambda函数的名称。

  • 单击“保存”以创建API。

Image description

- 从运行时下拉下选择节点。

Image description

代码示例

是导入JSON

示例数据

data = {
“项目”:[
{“ id”:1,“ name”:“ item 1”,“ Price”:10.99},
{“ id”:2,“ name”:“ item 2”,“ Price”:15.99},
{“ ID”:3,“名称”:“项目3”,“ PRISE”:20.99},
]
}

def lambda_handler(事件,上下文):
#确定请求的HTTP方法
http_method = event [“ httpmethod”]
#处理获取请求
如果http_method ==“ get”:
#返回响应中的数据
响应= {
“状态密码”:200,
“正文”:json.dumps(数据)
}
返回响应

# 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函数,lambda_handler,该函数在某些数据上处理了不同类型的HTTP请求(获取,发布,put,删除)。数据是包含项目数组的对象,每个项目都有一个ID,名称和价格。

调用函数时,它首先从事件对象确定请求的HTTP方法。然后它相应地处理请求:

  • 获取:以200。
  • 的状态代码返回响应中的数据。
  • 帖子:检索请求的身体并将其解析为JSON,然后将接收到的数据添加到示例数据中,然后以200。
  • 的状态代码返回响应中的更新数据。
  • put:检索请求的身体并将其解析为JSON,然后使用接收到的数据更新示例数据,然后以200。
  • 的状态代码返回响应中的更新数据。
  • 删除:检索请求的正文并将其解析为JSON,然后在示例数据中找到带有指定ID的项目,然后将其删除,然后以200。 /li>
  • 如果不支持该方法,它将以405的状态代码返回错误消息。

通过单击操作并选择部署API。

部署API。

Image description

选择一个部署阶段(例如,测试或测试),然后单击部署。使用生成的API端点向您的API提出请求。

Image description

在Postman中运行和测试代码

现在,我们的API正在运行。您可以通过Postman发送测试HTTP请求。通过向您的调用URL发送请求,您应该看到200个状态代码。对于此测试,即将到来的请求不需要任何请求主体。

Image description

包起来

这样,我们使用AWS Lambda和Python创建了一个简单的静态API。该代码可以作为为您的应用程序创建更复杂的API的基础。当您继续开发API时,您可能需要考虑实施安全措施,例如API密钥,与API网关,monitoring the usage of the API集成或通过API monetization产生收入。如果您有兴趣探索API分析和获利的选项,请查看Moesif