Express REST API návrh ekosystému rubrika: Programování: JavaScript
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š
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:
Nebo se přihlaste jménem a heslem: