# Een JSON-body valideren met een actie

> Definieer een invoerschema op een actie en laat Total.js ongeldige verzoeken afwijzen voordat jouw code draait.

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

In Total.js 5 declareer je de invoer van een actie met `input`. Een sterretje voor een veldnaam (`*email`) markeert het als verplicht, en het type na de dubbele punt (`Email`) wordt door het framework gevalideerd. Jouw `action`-functie draait alleen als de gegevens geldig zijn.

Routes wijzen met de operator `-->` naar een actie. Het voorvoegsel `*` betekent "actie" (in tegenstelling tot een controllerfunctie).

```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');
};
```

Stuur een geldige body en de actie wordt uitgevoerd. Stuur een ongeldig e-mailadres en het framework antwoordt met een validatiefout zonder je functie aan te roepen.
