

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon SQS 中使用 AWS JSON 通訊協定提出查詢 API 請求
<a name="sqs-making-api-requests-json"></a>

本主題說明如何建構 Amazon SQS 端點、提出 POST 請求，以及解譯回應。

**注意**  
AWS 大多數語言變體都支援 JSON 通訊協定。如需支援的語言變體完整清單，請參閱 [Amazon SQS APIs 中使用的 AWS JSON 通訊協定支援哪些語言？](sqs-json-faqs.md#json-protocol-supported-languages)。

## 建構端點
<a name="sqs-api-constructing-endpoints-json"></a>

為了使用 Amazon SQS 佇列，您必須建構端點。如需 Amazon SQS 端點的相關資訊，請參閱 *Amazon Web Services 一般參考* 中的以下頁面：
+ [區域端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)
+ [Amazon Simple Queue Service 端點和配額](https://docs.aws.amazon.com/general/latest/gr/sqs-service)

每個 Amazon SQS 端點都是獨立的。例如，若有兩個佇列同樣名為 *MyQueue*，其中一個佇列具有端點 `sqs.us-east-2.amazonaws.com`，而另一個佇列具有端點 `sqs.eu-west-2.amazonaws.com`，這兩個佇列便不會相互共享任何資料。

以下是某個端點提出請求建立佇列的範例。

```
POST / HTTP/1.1
Host: sqs.us-west-2.amazonaws.com
X-Amz-Target: AmazonSQS.CreateQueue
X-Amz-Date: <Date>
Content-Type: application/x-amz-json-1.0
Authorization: <AuthParams>
Content-Length: <PayloadSizeBytes>
Connection: Keep-Alive 
{
    "QueueName":"MyQueue",
    "Attributes": {
        "VisibilityTimeout": "40"
    },
    "tags": {
        "QueueType": "Production"
    }
}
```

**注意**  
佇列名稱和佇列 URL 區分大小寫。  
{{`AUTHPARAMS`}} 的結構取決於 API 請求的簽署。如需詳細資訊，請參閱《*Amazon Web Services 一般參考*》中的[簽署 AWS API 請求](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)。

## 提出 POST 請求
<a name="structure-post-request"></a>

Amazon SQS POST 請求是以 HTTP 請求本文的形式傳送查詢參數。

以下是 `X-Amz-Target` 設定為 `AmazonSQS.<operationName>` 的 HTTP 標頭範例，以及 `Content-Type` 設定為 `application/x-amz-json-1.0` 的 HTTP 標頭。

```
POST / HTTP/1.1
Host: sqs.<region>.<domain>
X-Amz-Target: AmazonSQS.SendMessage
X-Amz-Date: <Date>
Content-Type: application/x-amz-json-1.0
Authorization: <AuthParams>
Content-Length: <PayloadSizeBytes>
Connection: Keep-Alive 
{
    "QueueUrl": "https://sqs.<region>.<domain>/<awsAccountId>/<queueName>/",
    "MessageBody": "This is a test message"
}
```

這個 HTTP POST 請求會將訊息發佈至 Amazon SQS 佇列。

**注意**  
這兩個 HTTP 標頭 `X-Amz-Target` 和 `Content-Type` 是必要的。  
視用戶端的 HTTP 版本而定，HTTP 用戶端可能會對 HTTP 請求增加其他項目。