📤 6.4 Publicando Dados (POST) e Serialização Automática

Enviar dados para uma API não deve envolver a criação manual de Strings JSON gigantescas. A Engenharia de Elite utiliza a serialização automática: você passa um objeto Java (POJO) e o REST-assured cuida da conversão.

🏁 O Cenário: Cadastro de Leilão

Registrar um leilão exige o envio de um payload complexo e a validação do status 201 Created (ou 200 OK dependendo do design da API).

📄 Exemplo: Serialização com Jackson/Gson

@Test
@DisplayName("Deve cadastrar um novo leilão via POST JSON")
void deveCadastrarLeilao() {
    // 🧱 Montagem do Objeto (POJO)
    var novoLeilao = new Leilao("Macbook Pro", 5000.0, "Vendedor Elite", false);
 
    given()
        .contentType("application/json")
        .body(novoLeilao) // ✅ Converte objeto para JSON automaticamente
    .when()
        .post("/leiloes")
    .then()
        .statusCode(200)
        .body("nome", is("Macbook Pro"))
        .body("valorInicial", equalTo(5000.0f));
}

🏗️ Como configurar a Serialização?

O REST-assured detecta automaticamente se você tem bibliotecas como Jackson, Gson ou Johnzon no seu pom.xml.

  1. Ele lê o Content-Type: application/json.
  2. Inspeciona o objeto passado no .body().
  3. Gera o JSON correspondente.

HTTP Status Codes 🛡️

Fique atento ao padrão REST da sua empresa. Enquanto o POST geralmente retorna 201 Created, muitas APIs legadas retornam 200 OK. Seus testes devem ser flexíveis para validar o que o contrato define. 🏁


📊 Fluxo de Publicação de Dados

flowchart TD
    A["Objeto Java (POJO)"] --> B["REST-assured: body()"]
    B --> C["Jackson Mapper (Serialização)"]
    C --> D["Requisição POST (Raw JSON)"]
    D --> E["Servidor API"]
    style C fill:#e3f2fd,stroke:#1e88e5

Dica de Ouro ⚡

Se você precisar enviar parâmetros de formulário tradicional (application/x-www-form-urlencoded), utilize o método .formParam("nome", "valor") em vez do .body(). 🚀


⬅️ Capítulo Anterior | Próximo Capítulo ➡️