📤 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.
- Ele lê o
Content-Type: application/json. - Inspeciona o objeto passado no
.body(). - Gera o JSON correspondente.
HTTP Status Codes 🛡️
Fique atento ao padrão REST da sua empresa. Enquanto o
POSTgeralmente 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(). 🚀