

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Fazer solicitações de API de consulta usando o protocolo AWS JSON no Amazon SQS
<a name="sqs-making-api-requests-json"></a>

Este tópico explica como criar um endpoint do Amazon SQS, fazer solicitações POST e interpretar respostas.

**nota**  
AWS O protocolo JSON é compatível com a maioria das variantes de linguagem. Para ver uma lista completa de variantes de linguagem compatíveis, consulte [Quais idiomas são compatíveis com o protocolo AWS JSON usado no Amazon APIs SQS?](sqs-json-faqs.md#json-protocol-supported-languages).

## Criar um endpoint
<a name="sqs-api-constructing-endpoints-json"></a>

Para trabalhar com filas do Amazon SQS, você deve criar um endpoint. Para ter informações sobre endpoints do Amazon SQS, consulte as seguintes páginas na *Referência geral da Amazon Web Services*:
+ [Endpoints regionais](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)
+ [Endpoints e cotas do Amazon Simple Queue Service](https://docs.aws.amazon.com/general/latest/gr/sqs-service)

Cada endpoint do Amazon SQS é totalmente independente. Por exemplo, se duas filas forem nomeadas *MyQueue*, uma tiver um endpoint `sqs.us-east-2.amazonaws.com` e a outra tiver o endpoint `sqs.eu-west-2.amazonaws.com`, elas não compartilham dados entre si.

Veja a seguir um exemplo de endpoint que faz uma solicitação para criar uma fila. 

```
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"
    }
}
```

**nota**  
Os nomes das filas e as URLs filas diferenciam maiúsculas de minúsculas.  
A estrutura de *`AUTHPARAMS`* depende de como você assina sua solicitação de API. Para obter mais informações, consulte [Assinar solicitações de AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) na *Referência geral da Amazon Web Services*.

## Como fazer uma solicitação POST
<a name="structure-post-request"></a>

As solicitações POST do Amazon SQS enviam parâmetros de consulta como um formulário no corpo de uma solicitação HTTP.

Veja a seguir um exemplo de cabeçalho HTTP com `X-Amz-Target` definido como `AmazonSQS.<operationName>` e um cabeçalho HTTP com `Content-Type` definido como `application/x-amz-json-1.0`.

```
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"
}
```

Essa solicitação HTTP POST envia uma mensagem a uma fila do Amazon SQS.

**nota**  
Os dois cabeçalhos HTTP `X-Amz-Target` e `Content-Type` são obrigatórios.  
Seu cliente HTTP pode adicionar outros itens à solicitação HTTP, de acordo com a versão do HTTP do cliente.

# Interpretar as respostas da API JSON do Amazon SQS
<a name="sqs-json-api-responses"></a>

Quando você envia uma solicitação para o Amazon SQS, ela retorna uma resposta JSON com os resultados. A estrutura de resposta depende da ação da API que você usou.

Para entender os detalhes dessas respostas, consulte:
+ A ação específica da API nas [ações da API](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Operations.html) na *Referência de API do Amazon Simple Queue Service*
+ A [Protocolo Amazon SQS JSON AWS FAQs](sqs-json-faqs.md)

## Estrutura de resposta JSON bem-sucedida
<a name="sqs-json-api-successful-response-structure"></a>

Se a solicitação for bem-sucedida, o principal elemento de resposta será `x-amzn-RequestId`, que contém o identificador único universal (UUID) da solicitação, bem como outros campos de resposta anexados. Por exemplo, a resposta [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html) a seguir contém o campo `QueueUrl`, que, por sua vez, contém o URL da fila criada.

```
HTTP/1.1 200 OK
x-amzn-RequestId: <requestId>
Content-Length: <PayloadSizeBytes>
Date: <Date>
Content-Type: application/x-amz-json-1.0
{
    "QueueUrl":"https://sqs.us-east-1.amazonaws.com/111122223333/MyQueue"
}
```

## Estrutura de resposta de erro JSON
<a name="sqs-api-error-response-structure"></a>

Se uma solicitação não for bem-sucedida, o Amazon SQS retornará a resposta principal, incluindo o cabeçalho HTTP e o corpo.

No cabeçalho HTTP, `x-amzn-RequestId` contém o UUID da solicitação. `x-amzn-query-error` contém duas informações: o tipo de erro e se o erro foi do produtor ou do consumidor. 

No corpo de resposta, `"__type"` indica outros detalhes do erro, e `Message` indica a condição de erro em um formato legível. 

Veja a seguir um exemplo de resposta de erro no formato JSON:

```
HTTP/1.1 400 Bad Request
x-amzn-RequestId: 66916324-67ca-54bb-a410-3f567a7a0571
x-amzn-query-error: AWS.SimpleQueueService.NonExistentQueue;Sender
Content-Length: <PayloadSizeBytes>
Date: <Date>
Content-Type: application/x-amz-json-1.0
{
    "__type": "com.amazonaws.sqs#QueueDoesNotExist",
    "message": "The specified queue does not exist."
}
```

# Protocolo Amazon SQS JSON AWS FAQs
<a name="sqs-json-faqs"></a>

Este tópico aborda perguntas frequentes sobre o uso do protocolo AWS JSON com o Amazon SQS.

## O que é o protocolo AWS JSON e como ele difere das solicitações e respostas existentes da API Amazon SQS?
<a name="json-protocol-what-is"></a>

JSON é um dos métodos de conexão mais amplamente usados e aceitos para comunicação entre sistemas heterogêneos. O Amazon SQS usa o JSON como meio de comunicação entre um cliente AWS SDK (por exemplo, Java, Python, Golang) JavaScript e o servidor Amazon SQS. Uma solicitação HTTP de uma operação de API do Amazon SQS aceita entrada formatada em JSON. A operação do Amazon SQS é executada, e a resposta de execução é compartilhada de volta com o cliente do SDK no formato JSON. Comparado com a consulta da  AWS , o JSON é mais eficiente para transportar dados entre o cliente e o servidor. 
+ O protocolo Amazon SQS AWS JSON atua como um mediador entre o cliente e o servidor do Amazon SQS.
+ O servidor não entende a linguagem de programação na qual a operação do Amazon SQS é criada, mas entende o protocolo AWS JSON.
+ O protocolo Amazon SQS AWS JSON usa a serialização (converter objeto no formato JSON) e a desserialização (converter formato JSON em objeto) entre o cliente e o servidor do Amazon SQS.

## Como faço para começar a usar os protocolos AWS JSON para o Amazon SQS?
<a name="json-protocol-getting-started"></a>

Para começar a usar a versão mais recente do AWS SDK e obter mensagens mais rápidas para o Amazon SQS, atualize AWS seu SDK para a versão especificada ou para qualquer versão posterior. Para saber mais sobre os clientes do SDK, consulte a coluna “Guia” na tabela abaixo.

A seguir está uma lista de versões do SDK em todas as variantes de linguagem do protocolo AWS JSON para uso com o Amazon SQS: APIs


| Linguagem | Repositório do cliente do SDK | Versão obrigatória do cliente do SDK | Guia | 
| --- | --- | --- | --- | 
|  C\$1\$1  |  [aws/ aws-sdk-cpp](https://github.com/aws/aws-sdk-cpp)  |  [1.11.98](https://github.com/aws/aws-sdk-cpp/releases/tag/1.11.198)  |  [AWS SDK para C\$1\$1](https://aws.amazon.com/sdk-for-cpp/)  | 
|  Golang 1.x  |  [aws/ aws-sdk-go](https://github.com/aws/aws-sdk-go)  |  [v1.47.7](https://github.com/aws/aws-sdk-go/releases/tag/v1.47.7)  |  [AWS SDK para Go](https://aws.amazon.com/sdk-for-go/)  | 
|  Golang 2.x  |  [serra/ 2 aws-sdk-go-v](https://github.com/aws/aws-sdk-go-v2)  |  [v1.28.0](https://github.com/aws/aws-sdk-go-v2/blob/release-2023-11-09/service/sqs/CHANGELOG.md#v1270-2023-11-09)  |  [AWS SDK para Go V2](https://aws.github.io/aws-sdk-go-v2/docs/)  | 
|  Java 1.x  |  [aws/ aws-sdk-java](https://github.com/aws/aws-sdk-java)  |  [1.12.585](https://github.com/aws/aws-sdk-java/releases/tag/1.12.585)  |  [AWS SDK para Java](https://aws.amazon.com/sdk-for-java/)  | 
|  Java 2.x  |  [serra/ 2 aws-sdk-java-v](https://github.com/aws/aws-sdk-java-v2)  |  [2.21.19](https://github.com/aws/aws-sdk-java-v2/releases/tag/2.21.19)  |  [AWS SDK para Java](https://aws.amazon.com/sdk-for-java/)  | 
|  JavaScript v2.x  |  [aws/ aws-sdk-js](https://github.com/aws/aws-sdk-js)  |  [JavaScript em AWS](https://aws.amazon.com/developer/language/javascript/)  | 
|  JavaScript v3.x  |  [serra/ 3 aws-sdk-js-v](https://github.com/aws/aws-sdk-js-v3)  |  [v3.447.0](https://github.com/aws/aws-sdk-js-v3/releases/tag/v3.447.0)  |  [JavaScript em AWS](https://aws.amazon.com/developer/language/javascript/)  | 
|  .NET  |  [aws/ aws-sdk-net](https://github.com/aws/aws-sdk-net)  |  [3.7.681.0](https://github.com/aws/aws-sdk-net/releases/tag/3.7.681.0)  |  [AWS SDK para .NET](https://aws.amazon.com/sdk-for-net/)  | 
|  PHP  |  [aws/ aws-sdk-php](https://github.com/aws/aws-sdk-php)  |  [3.285.2](https://github.com/aws/aws-sdk-php/releases/tag/3.285.2)  |  [AWS SDK para PHP](https://aws.amazon.com/sdk-for-php/)  | 
|  Python-boto3  |   [boto/boto3](https://github.com/boto/boto3)   |  [1.28.82](https://github.com/boto/boto3/releases/tag/1.28.82)  |  [AWS SDK para Python (Boto3)](https://aws.amazon.com/sdk-for-python/)  | 
|  Python-botocore  |   [boto/botocore](https://github.com/boto/botocore/)   |  [1.31.82](https://github.com/boto/botocore/releases/tag/1.31.82)  |  [AWS SDK para Python (Boto3)](https://aws.amazon.com/sdk-for-python/)  | 
|  awscli  |  [AWS CLI](https://github.com/aws/aws-cli)  |  [1.29.82](https://github.com/aws/aws-cli/releases/tag/1.29.82)  |  [AWS Command Line Interface](https://aws.amazon.com/cli/)  | 
|  Ruby  |  [aws/ aws-sdk-ruby](https://github.com/aws/aws-sdk-ruby)  |  [1.67,0](https://rubygems.org/gems/aws-sdk-sqs/versions/1.67.0)  |  [AWS SDK para Ruby](https://aws.amazon.com/sdk-for-ruby/)  | 

## Quais são os riscos de habilitar o protocolo JSON para minhas workloads do Amazon SQS?
<a name="json-protocol-risks"></a>

Se você estiver usando uma implementação personalizada do AWS SDK ou uma combinação de clientes personalizados e AWS SDK para interagir com o Amazon SQS que AWS gera respostas baseadas em consultas (também conhecidas como baseadas em XML), ela pode ser incompatível com o protocolo JSON. AWS Se você encontrar algum problema, entre em contato com o AWS Support.

## E se eu já estiver usando a versão mais recente do AWS SDK, mas minha solução de código aberto não for compatível com JSON?
<a name="json-protocol-sdk-version-open-source"></a>

É necessário alterar a versão do SDK para a versão anterior à que você está usando. Consulte [Como faço para começar a usar os protocolos AWS JSON para o Amazon SQS?](#json-protocol-getting-started) para obter mais informações. AWS As versões do SDK listadas em [Como faço para começar a usar os protocolos AWS JSON para o Amazon SQS?](#json-protocol-getting-started) usam o protocolo de conexão JSON para o Amazon SQS. APIs Se você alterar seu AWS SDK para a versão anterior, seu Amazon APIs SQS AWS usará a consulta.

## Quais idiomas são compatíveis com o protocolo AWS JSON usado no Amazon APIs SQS?
<a name="json-protocol-supported-languages"></a>

O Amazon SQS oferece suporte a todas as variantes de idioma onde AWS SDKs estão disponíveis ao público em geral (GA). No momento, não há compatibilidade com Kotlin, Rust e Swift. Para saber mais sobre outras variantes de linguagem, consulte [Ferramentas para criar com a AWS](https://aws.amazon.com/developer/tools/).

## Quais regiões são compatíveis com o protocolo AWS JSON usado no Amazon SQS APIs
<a name="json-protocol-supported-regions"></a>

O Amazon SQS oferece suporte ao protocolo AWS JSON em todas as [AWS regiões](https://docs.aws.amazon.com/general/latest/gr/sqs-service.html) em que o Amazon SQS está disponível. 

## Quais melhorias de latência posso esperar ao atualizar para as versões especificadas do AWS SDK para o Amazon SQS usando o protocolo JSON? AWS
<a name="json-protocol-upgrading-sdk"></a>

AWS O protocolo JSON é mais eficiente na serialização e desserialização de solicitações e respostas quando comparado ao protocolo de consulta. AWS Com base em testes de AWS desempenho para uma carga útil de mensagem de 5 KB, o protocolo JSON para Amazon SQS end-to-end reduz a latência do processamento de mensagens em até 23% e reduz o uso da CPU e da memória do lado do cliente do aplicativo. 

## O protocolo AWS de consulta será descontinuado?
<a name="query-protocol"></a>

AWS o protocolo de consulta continuará sendo suportado. Você pode continuar usando o protocolo de AWS consulta, desde que sua versão do AWS SDK esteja definida como uma versão anterior diferente da listada em [Como começar a usar os protocolos AWS JSON para Amazon SQS.](#json-protocol-getting-started)

## Onde posso encontrar mais informações sobre o protocolo AWS JSON?
<a name="json-protocol-more-info"></a>

Você pode receber mais informações sobre o protocolo JSON em[AWS  JSON 1.0 protocol](https://smithy.io/2.0/aws/protocols/aws-json-1_0-protocol.html) na documentação da *Smithy*. Para saber mais sobre as solicitações de API do Amazon SQS usando o protocolo JSON da  AWS , consulte [Fazer solicitações de API de consulta usando o protocolo AWS JSON no Amazon SQS](sqs-making-api-requests-json.md).