Making Query API requests - Amazon Simple Queue Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Making Query API requests

在本节中,您将了解如何构建 Amazon SQS 终端节点,如何发出 GETPOST 请求以及如何解释响应。

Constructing an endpoint

为了使用 Amazon SQS 队列,您必须构建一个终端节点。有关特定于区域的 Amazon SQS 终端节点的信息,请参阅 Amazon Web Services 一般参考

每个 Amazon SQS 终端节点都是独立的。例如,如果有两个名为 MyQueue 的队列,其中一个队列具有终端节点 sqs.us-east-2.amazonaws.com,另一个队列具有终端节点 sqs.eu-west-2.amazonaws.com,则这两个队列不会相互共享任何数据。

以下是一个提出创建队列的请求的终端节点的示例。

https://sqs.eu-west-2.amazonaws.com/ ?Action=CreateQueue &DefaultVisibilityTimeout=40 &QueueName=MyQueue &Version=2012-11-05 &AUTHPARAMS
注意

队列名称和队列 URL 区分大小写。

AUTHPARAMS 的结构取决于 API 请求的签名。有关更多信息,请参阅 Amazon Web Services 一般参考 中的签署 AWS API 请求

Making a GET request

Amazon SQS GET 请求被构建为由以下部分组成的 URL:

  • Endpoint – The resource that the request is acting on (the queue name and URL), for example: https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue

  • Action – The action that you want to perform on the endpoint. A question mark (?) separates the endpoint from the action, for example: ?Action=SendMessage&MessageBody=Your%20Message%20Text

  • Parameters – Any request parameters—each parameter is separated by an ampersand (&), for example: &Version=2012-11-05&AUTHPARAMS

以下是一个 GET 请求的示例,该请求向 Amazon SQS 队列发送一条消息。

https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue ?Action=SendMessage&MessageBody=Your%20message%20text &Version=2012-11-05 &AUTHPARAMS
注意

队列名称和队列 URL 区分大小写。

因为 GET 请求是 URL,因此您必须对所有参数值进行 URL 编码。由于URL中不允许空格,每个空间都为URL编码 %20。(该示例的其余部分未编码URL以便更容易阅读。)

Making a POST request

Amazon SQS POST 请求在 HTTP 请求的正文中以表单的形式发送查询参数。

下面是一个 Content-Type 设置为 application/x-www-form-urlencoded 的 HTTP 标头的示例。

POST /123456789012/MyQueue HTTP/1.1 Host: sqs.us-east-2.amazonaws.com Content-Type: application/x-www-form-urlencoded

该标头后跟一个 form-urlencoded POST 请求,该请求向 Amazon SQS 队列发送一条消息。各参数以和号 (&) 分隔。

Action=SendMessage &MessageBody=Your+Message+Text &Expires=2020-10-15T12%3A00%3A00Z &Version=2012-11-05 &AUTHPARAMS
注意

Content-Type HTTP 标头是必需的。AUTHPARAMS 对于 GET 请求是相同的。

根据客户端的 HTTP 版本,您的 HTTP 客户端可能会向 HTTP 请求添加其他项目。