{"elements":[{"id":7002,"title":"Quick Start","body":"<section class=\"da-section\">\n  <div class=\"container\">\n    <h2>Da zero a API funzionante<\/h2>\n    <p class=\"lead\">Questa guida ti accompagna nella creazione del tuo primo progetto con DressAPI. Partendo da un database ben strutturato, otterrai automaticamente un'API REST completa con operazioni CRUD, autenticazione, ACL e caching &mdash; il tutto senza scrivere una singola riga di codice applicativo. Vedremo insieme l'installazione, la configurazione e la prima chiamata API.<\/p>\n\n    <h3 class=\"mt-5\">1. Installa DressAPI<\/h3>\n    <div class=\"da-install-box text-start\">\n      <span class=\"prompt\">$ <\/span>composer require dressapi\/core\n    <\/div>\n\n    <h3 class=\"mt-5\">2. Configura il database<\/h3>\n    <div class=\"da-snippet\">\n      <div class=\"da-snippet-label\">config.php<\/div>\n<span class=\"kw\">define<\/span>(<span class=\"str\">'DB_HOST'<\/span>,     <span class=\"str\">'localhost'<\/span>);\n<span class=\"kw\">define<\/span>(<span class=\"str\">'DB_NAME'<\/span>,     <span class=\"str\">'your_database'<\/span>);\n<span class=\"kw\">define<\/span>(<span class=\"str\">'DB_USERNAME'<\/span>, <span class=\"str\">'your_user'<\/span>);\n<span class=\"kw\">define<\/span>(<span class=\"str\">'DB_PASSWORD'<\/span>, <span class=\"str\">'your_password'<\/span>);\n    <\/div>\n    <p class=\"text-muted mt-2\">Punta il DocumentRoot del web server alla directory <code>www\/<\/code> e la tua API &egrave; pronta.<\/p>\n\n    <h3 class=\"mt-5\">3. Crea il database<\/h3>\n    <div class=\"da-snippet\">\n      <div class=\"da-snippet-label\">SQL<\/div>\n<span class=\"kw\">CREATE TABLE<\/span> categories (\n    id <span class=\"str\">INT AUTO_INCREMENT PRIMARY KEY<\/span>,\n    name <span class=\"str\">VARCHAR(100) NOT NULL<\/span>,\n    description <span class=\"str\">TEXT<\/span>\n);\n\n<span class=\"kw\">CREATE TABLE<\/span> products (\n    id <span class=\"str\">INT AUTO_INCREMENT PRIMARY KEY<\/span>,\n    name <span class=\"str\">VARCHAR(200) NOT NULL<\/span>,\n    price <span class=\"str\">DECIMAL(10,2) NOT NULL<\/span>,\n    id_category <span class=\"str\">INT<\/span>,\n    product_img <span class=\"str\">VARCHAR(255)<\/span>,\n    <span class=\"kw\">FOREIGN KEY<\/span> (id_category) <span class=\"kw\">REFERENCES<\/span> categories(id)\n);\n    <\/div>\n\n    <h3 class=\"mt-5\">4. Risultato automatico<\/h3>\n    <p>Senza scrivere codice, ottieni immediatamente:<\/p>\n    <div class=\"table-responsive\">\n      <table class=\"table table-striped\">\n        <thead class=\"table-dark\">\n          <tr><th>Richiesta<\/th><th>Risultato<\/th><\/tr>\n        <\/thead>\n        <tbody>\n          <tr><td><code>GET \/categories<\/code><\/td><td>Lista categorie con paginazione<\/td><\/tr>\n          <tr><td><code>GET \/categories\/1<\/code><\/td><td>Dettaglio categoria<\/td><\/tr>\n          <tr><td><code>GET \/products<\/code><\/td><td>Lista prodotti<\/td><\/tr>\n          <tr><td><code>GET \/products\/ob\/price-DESC<\/code><\/td><td>Prodotti ordinati per prezzo decrescente<\/td><\/tr>\n          <tr><td><code>GET \/products\/id_category=3<\/code><\/td><td>Prodotti della categoria 3<\/td><\/tr>\n          <tr><td><code>GET \/products\/price&gt;50\/p\/1,10<\/code><\/td><td>Prodotti sopra 50&euro;, pagina 1, 10 per pagina<\/td><\/tr>\n          <tr><td><code>POST \/products<\/code><\/td><td>Crea nuovo prodotto<\/td><\/tr>\n          <tr><td><code>PUT \/products\/5<\/code><\/td><td>Modifica prodotto 5<\/td><\/tr>\n          <tr><td><code>DELETE \/products\/5<\/code><\/td><td>Elimina prodotto 5<\/td><\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n\n    <h3 class=\"mt-5\">Comportamento automatico dei campi<\/h3>\n    <ul>\n      <li><code>id_category<\/code> &rarr; diventa automaticamente un <strong>dropdown<\/strong> con le categorie<\/li>\n      <li><code>product_img<\/code> &rarr; diventa automaticamente un <strong>uploader immagini<\/strong><\/li>\n      <li><code>description<\/code> &rarr; diventa automaticamente una <strong>textarea\/editor<\/strong><\/li>\n    <\/ul>\n  <\/div>\n<\/section>\n\n<section class=\"da-section text-center\">\n  <a href=\"\/tutorials\" class=\"btn btn-outline-primary\">&larr; Torna ai Tutorial<\/a>\n<\/section>","description":"Da zero a API funzionante con DressAPI","meta_keywords":"","visible":"yes","status":"public","creation_date":"0000-00-00","id__user":1,"priority":0,"groupname":"TUTORIAL"}],"module":"pages","permissions":{"can_read":true},"main_item_title":"title","related_tables":[{"name":"Newsonpage","module":"newsonpage","FK":"id_cmspage","permissions":[]}],"page_info":{"table":"","key":"id","url":"\/pages","url_list":"\/pages","filters":{"id":["=","7002"]},"pagination":{"total_items":23,"page":1,"total_pages":2,"step":1,"items_per_page":20,"url_prev":"\/pages","url_next":"\/pages\/p\/2","url_tmpl":"\/pages\/p\/[[p]]","url_tmpl_with_order":"\/pages\/p\/[[p]]\/ob\/[[ob]]"},"order":{"field":"id","type":"DESC","url_tmpl":"\/pages\/p\/[[p]]"},"module":{"title":"Pages","description":"List of pages","name":"pages"},"current":{"title":"Pages","description":"List of pages","name":"pages","url":"\/tutorials\/quick-start"}},"components":{"alert":{"alert1":[{"type":"warning","message":"OK COMPONENT!"},{"type":"danger","message":"ERROR COMPONENT!"}]}},"messages":[]}