Express REST API návrh ekosystému rubrika: Programování: JavaScript

2 zapotocnylubos
položil/-a 11.8.2018
 
upravil/-a 11.8.2018

Ahoj,
Potřebuju si udělat k mobilní aplikaci REST API. Node.js - Express 4

Používám MySQL ORM Sequelize http://docs.sequelizejs.com/
-- který má vlastní validace modelů (unikátní username, délka stringového atributu,...), kde tato validace se provádí při ukládání modelu
-- Pokud na jiných endpointech budu požadovat nějaké data, tuto vestavěnou validaci nepoužiji, ale musím požít jiný balíček.
--- Vestavěná validace Sequelize ale hází errory jiné, než u balíčku na valiadci těla requestu https://www.npmjs.com/package/express-joi
--- je tu nějaký způsob, jak udělat vyhazování chyb z API stejné? Aby obě validace házeli stejné chyby se stejnou strukturou erroru?
--- PS. Jde mi o to, abych nepsal jedny validační pravidla u definice modelu, a druhé u definice endpointu
---- ale pokud nenapíšu unique pravidloo u modelu bude to háze sql chybovou hlášku. Ale zase pomocí "joi" balíčku toto nevyřeším (unikátní username)

Je v dnešní době lepší psát ES5 javascript podporovaný Node.js nebo k tomu projektu dát Babel.js pro podporu ES6?
-- Vyplatí se to a je to u Expressu výhodné natolik abych to zprovozňoval? Co do budoucna?

Máte nějaký vyzkoušený balíček na automatické generování API dokumentace?
Narazil jsem na návod, kde používal Gulp pro spouštění serveru s Babel.js a generování dokmentace a testů, - Je to potřeba pokud bych plánovat do budoucna stejný balíček funkcí?

Popřípadě kdyby jste mi napsali jak podobné problémy řešíte nebo nějaké tipy.

Díky moc, každá rada mi pomůže
Luboš

odkaz
6 ivoszz
odpověděl/-a 11.8.2018

Začnu od konce, psát nový projekt v ES5 mi připadá nesmyslné a zbytečně omezující. A tahat do projektu Babel taky. Na klientovi to je něco jiného, ale pro Node.js? Pokud z nějakého důvodu nepoužíváš nějakou archaickou a dnes už nepodporovanou verzi, tak Node samo o sobě podporuje 99% ES6 (a to zbývající necelé procento jsou extrémní okrajové podmínky v běžně nepoužívaných vlastnostech). Podrobněji na node green. Node už dnes podporuje i async/await, není potřeba se držet ES5.

Duplikaci validačních pravidel se asi nevyhneš, jednou je máš na klientu, pak na vstupu a navíc ještě v ORM. Pravidla v ORM bych minimalizoval, klíčová je validace na vstupu API a ta je zpravidla mnohem bohatší, než validace v ORM. Teoreticky by k porušení ORM pravidel nemělo nikdy dojít (až na některé DB věci, jako třeba to duplicitní username), ale to je pouze chyba a ty z ní vygeneruješ odpovídající chybovou odpověď. Přiznám se, že nevidím moc překryv mezi validací API a v ORM. Aby se zabránilo změně pravidla na jedné vrstvě, která se nebude propagovat na jiné, doporučuji používat konstanty, vytvořit soubor s konstantami a ty importovat a používat ve všech validačních pravidlech.

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.