# Validar um body JSON com uma ação

> Defina um esquema de entrada numa ação e deixe o Total.js rejeitar pedidos inválidos antes de o seu código correr.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: pt
Content-SHA256: 646770f081a5b039987ec188e577719c8849618c6e2d82da07ab42a1d1d8580d
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

No Total.js 5 declara a entrada de uma ação com `input`. Um asterisco antes do nome de um campo (`*email`) marca-o como obrigatório, e o tipo depois dos dois pontos (`Email`) é validado pela framework. A sua função `action` só corre quando os dados são válidos.

As rotas apontam para uma ação com o operador `-->`. O prefixo `*` significa "ação" (em oposição a uma função de controlador).

```js definitions/subscribe.js
NEWACTION('Subscribe/exec', {
	name: 'Subscribe to the newsletter',
	input: '*email:Email, name:String',
	action: function($, model) {
		$.success(model.email);
	}
});
```

```js controllers/subscribe.js
exports.install = function() {
	ROUTE('POST /subscribe/ --> *Subscribe/exec');
};
```

Envie um body válido e a ação é executada. Envie um endereço de e-mail inválido e a framework responde com um erro de validação sem chamar a sua função.
