{"id":32850,"date":"2025-05-12T15:33:31","date_gmt":"2025-05-12T13:33:31","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=32850"},"modified":"2025-05-13T10:51:19","modified_gmt":"2025-05-13T08:51:19","slug":"techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/","title":{"rendered":"TechPills per tutti: Inizia a creare API REST con Django REST Framework"},"content":{"rendered":"\n<p>Django REST Framework (DRF) \u00e8 uno degli strumenti pi\u00f9 potenti e flessibili per creare API RESTful in Python. Questo articolo ti guider\u00e0 passo dopo passo nella creazione del tuo primo endpoint API, illustrando l&#8217;uso di serializers, views e URL routing.<\/p>\n\n\n\n<p>Abbiamo visto nel mio articolo precedente come strutturare il primo progetto Django, se non l&#8217;hai visto <a href=\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-metti-in-moto-il-tuo-primo-progetto-django\/\">clicca qui<\/a>, perch\u00e8 si parte proprio da dove ci siamo lasciati.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-obiettivi\"><strong>Obiettivi<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Comprendere il ruolo di Django REST Framework e perch\u00e9 \u00e8 utile.<\/li>\n\n\n\n<li>Creare un semplice endpoint API per la gestione di risorse.<\/li>\n\n\n\n<li>Eseguire richieste GET e POST per leggere e scrivere dati.<\/li>\n<\/ul>\n\n\n\n<p>Quindi, se hai seguito <a href=\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-metti-in-moto-il-tuo-primo-progetto-django\/\">il mio precedente articolo su Django<\/a>, hai gi\u00e0 un progetto Django configurato. Ora vediamo come esporre i dati attraverso un&#8217;API.<\/p>\n\n\n\n<p>Django REST Framework (DRF) \u00e8 un framework open source che estende Django per la costruzione di API web basate su architettura REST. Fornisce un set completo di strumenti per:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Serializzazione avanzata<\/strong>: converte istanze di modelli Django in formati (JSON, XML) utilizzabili dalle applicazioni client e viceversa, garantendo validazione dei dati e gestione personalizzata dei campi.<\/li>\n\n\n\n<li><strong>View classes e ViewSets<\/strong>: classi generiche (es. <code>ListCreateAPIView<\/code>, <code>RetrieveUpdateDestroyAPIView<\/code>) e ViewSets per gestire le operazioni CRUD minimizzando il codice boilerplate.<\/li>\n\n\n\n<li><strong>Routing intelligente<\/strong>: Routers automatici che associano in modo dinamico ViewSets alle rotte URL, semplificando la definizione degli endpoint.<\/li>\n\n\n\n<li><strong>Autenticazione e autorizzazione<\/strong>: supporto nativo per metodi di autenticazione (SessionAuth, TokenAuth, JWT) e classi di permission per controllare l\u2019accesso alle risorse.<\/li>\n\n\n\n<li><strong>Throttling, Filtering e Pagination<\/strong>: meccanismi integrati per limitare le richieste, filtrare i risultati e suddividere le risposte in pagine.<\/li>\n\n\n\n<li><strong>Browsable API<\/strong>: interfaccia HTML interattiva per esplorare e testare gli endpoint durante lo sviluppo.<\/li>\n<\/ul>\n\n\n\n<p>Ha un workflow abbastanza intuitivo diviso in serializers, views e routers:<br>I serializer gestiscono la conversione tra oggetti Python (tipicamente istanze dei modelli Django) e rappresentazioni serializzate (JSON, XML). <br><br>Le view di DRF processano le richieste HTTP e restituiscono le risposte serializzate. DRF offre classi generiche (<code>GenericAPIView<\/code>, <code>ListAPIView<\/code>, <code>CreateAPIView<\/code>, ecc.) per operazioni comuni. I <code>ViewSet<\/code> aggregano pi\u00f9 azioni (list, create, retrieve, update, destroy) in un&#8217;unica classe, lavorando in sinergia con i Routers per ridurre ulteriormente il codice.<br><br>I Routers collegano automaticamente le azioni dei ViewSet a pattern URL. Ad esempio, utilizzando <code>DefaultRouter<\/code> si ottengono endpoint come <code>\/notes\/<\/code> per list\/create e <code>\/notes\/{pk}\/<\/code> per retrieve\/update\/delete, senza dover scrivere manualmente ogni URL.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-preparazione-dell-ambiente\"><strong>Preparazione dell&#8217;ambiente<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-installazione\"><strong>Installazione<\/strong><\/h3>\n\n\n\n<p>Assicurati di avere Django installato e poi aggiungi Django REST Framework:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">pip install djangorestframework<\/code><\/span><\/pre>\n\n\n<p>Aggiungilo alle app installate in settings.py:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">INSTALLED_APPS = &#91;\n\n\u00a0\u00a0\u00a0\u00a0...\n\n\u00a0\u00a0\u00a0\u00a0<span class=\"hljs-string\">'rest_framework'<\/span>,\n]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-creazione-del-modello\"><strong>Creazione del modello<\/strong><\/h2>\n\n\n\n<p>Definiamo un modello semplice per una nota:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">from django.db import models\n\nclass Note(models.Model):\n\u00a0\u00a0\u00a0\u00a0title = models.CharField(max_length=100)\n\u00a0\u00a0\u00a0\u00a0content = models.TextField()\n\u00a0\u00a0\u00a0\u00a0created_at = models.DateTimeField(auto_now_add=True)<\/code><\/span><\/pre>\n\n\n<p>Dopo aver definito il modello, applica le migrazioni:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">python<\/span> <span class=\"hljs-selector-tag\">manage<\/span><span class=\"hljs-selector-class\">.py<\/span> <span class=\"hljs-selector-tag\">makemigrations<\/span>\n\n<span class=\"hljs-selector-tag\">python<\/span> <span class=\"hljs-selector-tag\">manage<\/span><span class=\"hljs-selector-class\">.py<\/span> <span class=\"hljs-selector-tag\">migrate<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<figure class=\"gb-block-image gb-block-image-632c4306\"><img decoding=\"async\" class=\"gb-image gb-image-632c4306\" src=\"https:\/\/i.ibb.co\/yBh6BW5t\/Screenshot-2025-04-29-alle-11-52-17.png\" alt=\"\"\/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-creazione-del-serializer\"><strong>Creazione del Serializer<\/strong><\/h2>\n\n\n\n<p>Creiamo un file all\u2019interno della directory della nostra app e lo chiamiamo <code>serializers.py<\/code><\/p>\n\n\n\n<figure class=\"gb-block-image gb-block-image-5dc56aae\"><img decoding=\"async\" class=\"gb-image gb-image-5dc56aae\" src=\"https:\/\/i.ibb.co\/Pzj6D8Hc\/Screenshot-2025-04-29-alle-11-53-28.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>I serializer convertono i dati del database in formato JSON:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">from rest_framework import serializers\nfrom .models import Note\n\nclass NoteSerializer(serializers.ModelSerializer):\n\n\u00a0\u00a0\u00a0\u00a0class Meta:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0model = Note\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fields = '__all__'<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-creazione-della-view\"><strong>Creazione della View<\/strong><\/h2>\n\n\n\n<p>Apriamo il file <code>views.py<\/code>, cancelliamo tutto il codice al suo interno.<\/p>\n\n\n\n<p>Usiamo una <code>ListCreateAPIView<\/code>, che permette di ottenere la lista degli elementi (GET) e di crearne di nuovi (POST):<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">from rest_framework import generics\nfrom .models import Note\nfrom .serializers import NoteSerializer\n\nclass NoteListCreateView(generics.ListCreateAPIView):\n\u00a0\u00a0\u00a0\u00a0queryset = Note.objects.all()\n\u00a0\u00a0\u00a0\u00a0serializer_class = NoteSerializer<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-configurazione-degli-url\"><strong>Configurazione degli URL<\/strong><\/h2>\n\n\n\n<p>Aggiungiamo un URL per la nostra API, quindi apriamo il file <code>urls.py<\/code> all\u2019interno della nostra app:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">from<\/span> django.urls <span class=\"hljs-keyword\">import<\/span> path\n<span class=\"hljs-keyword\">from<\/span> .views <span class=\"hljs-keyword\">import<\/span> NoteListCreateView\n\nurlpatterns = &#91;\n\u00a0\u00a0\u00a0\u00a0path(<span class=\"hljs-string\">'notes\/'<\/span>, NoteListCreateView.as_view(), name=<span class=\"hljs-string\">'note-list-create'<\/span>),\n]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Nel file <code>urls.py<\/code> principale del progetto:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">from<\/span> django.urls <span class=\"hljs-keyword\">import<\/span> path, include\n\nurlpatterns = &#91;\n\u00a0\u00a0\u00a0\u00a0path(<span class=\"hljs-string\">'api\/'<\/span>, include(<span class=\"hljs-string\">'nome_app.urls'<\/span>)),\n]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>La Browsable API di Django REST Framework<\/strong><\/p>\n\n\n\n<p>Django REST Framework include una <strong>Browsable API<\/strong> integrata che permette di esplorare e interagire con i tuoi endpoint direttamente dal browser, senza dover ricorrere ad altri strumenti come Postman o curl. \u00c8 una vera interfaccia utente HTML dinamica che:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Visualizza le risorse<\/strong>: elenca i campi disponibili, i relativi tipi e i valori correnti, in modo chiaro e leggibile.<br><\/li>\n\n\n\n<li><strong>Supporta le operazioni CRUD<\/strong>: fornisce automaticamente form per inviare richieste GET, POST, PUT e DELETE, compilando i campi in base al serializer.<br><\/li>\n\n\n\n<li><strong>Gestisce l\u2019autenticazione<\/strong>: permette di autenticarsi via sessione o token direttamente dall\u2019interfaccia, nascondendo o mostrando i link a seconda dei permessi.<br><\/li>\n\n\n\n<li><strong>Mostra gli errori<\/strong>: evidenzia gli errori di validazione con messaggi dettagliati accanto ai campi, facilitando il debug.<br><\/li>\n<\/ul>\n\n\n\n<p>Per abilitarla non serve alcuna configurazione aggiuntiva: basta includere &#8216;rest_framework&#8217; in INSTALLED_APPS e accedere all\u2019URL nel browser (es. http:\/\/127.0.0.1:8000\/api\/notes\/). La Browsable API \u00e8 particolarmente utile in fase di sviluppo, perch\u00e9 consente di testare rapidamente gli endpoint, verificare il formato dei dati e comprendere la struttura delle risposte JSON in maniera visuale.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-testing-dell-api\"><strong>Testing dell&#8217;API<\/strong><\/h2>\n\n\n\n<p>Possiamo testare il nostro endpoint con strumenti come <strong>curl<\/strong> o <strong>Postman<\/strong>, oppure utilizzando la browsable api inclusa in django rest framework.<\/p>\n\n\n\n<p>Quindi apriamo il terminale e scriviamo:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">python<\/span> <span class=\"hljs-selector-tag\">manage<\/span><span class=\"hljs-selector-class\">.py<\/span> <span class=\"hljs-selector-tag\">runserver<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<figure class=\"gb-block-image gb-block-image-298bdfcc\"><img decoding=\"async\" class=\"gb-image gb-image-298bdfcc\" src=\"https:\/\/i.ibb.co\/8nnhb7BX\/Screenshot-2025-04-29-alle-11-58-35.png\" alt=\"\"\/><\/figure>\n\n\n\n<p><strong>Esempio di richiesta GET:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl http:<span class=\"hljs-comment\">\/\/127.0.0.1:8000\/api\/notes\/<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Esempio di richiesta POST:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl -X POST -H <span class=\"hljs-string\">\"Content-Type: application\/json\"<\/span> -d <span class=\"hljs-string\">'{\"title\": \"Test\", \"content\": \"Contenuto della nota\"}'<\/span> http:<span class=\"hljs-comment\">\/\/127.0.0.1:8000\/api\/notes\/<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>oppure utilizzando la browsable api:<\/p>\n\n\n\n<figure class=\"gb-block-image gb-block-image-eab6c676\"><img decoding=\"async\" class=\"gb-image gb-image-eab6c676\" src=\"https:\/\/i.ibb.co\/9mFCmhgM\/Screenshot-2025-04-29-alle-11-59-08.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"gb-block-image gb-block-image-3080e459\"><img decoding=\"async\" class=\"gb-image gb-image-3080e459\" src=\"https:\/\/i.ibb.co\/gZX95SvH\/Screenshot-2025-04-29-alle-12-01-45.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Se tutto funziona correttamente, dovresti vedere i dati restituiti in formato JSON.<\/p>\n\n\n\n<figure class=\"gb-block-image gb-block-image-2c9723e0\"><img decoding=\"async\" class=\"gb-image gb-image-2c9723e0\" src=\"https:\/\/i.ibb.co\/kgHZMSCD\/Screenshot-2025-04-29-alle-12-02-14.png\" alt=\"\"\/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-best-practices\"><strong>Best Practices<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-gestione-degli-errori\"><strong>Gestione degli errori<\/strong><\/h3>\n\n\n\n<p>DRF gestisce automaticamente gli errori comuni, ma possiamo personalizzare i messaggi di errore se necessario.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-sicurezza\"><strong>Sicurezza<\/strong><\/h3>\n\n\n\n<p>Per proteggere l&#8217;API, si possono implementare autenticazione e autorizzazione con i meccanismi offerti da DRF, come Token Authentication o JWT.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-modularita\"><strong>Modularit\u00e0<\/strong><\/h3>\n\n\n\n<p>Per progetti pi\u00f9 complessi, DRF offre <strong>ViewSets<\/strong> e <strong>Routers<\/strong> che semplificano la gestione delle API.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-prossimi-passi\"><strong>Prossimi Passi<\/strong><\/h2>\n\n\n\n<p>Abbiamo visto come creare un&#8217;API REST semplice con Django REST Framework, includendo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Definizione di un modello,<\/li>\n\n\n\n<li>Creazione di un serializer,<\/li>\n\n\n\n<li>Implementazione di una view,<\/li>\n\n\n\n<li>Configurazione degli URL,<\/li>\n\n\n\n<li>Test dell&#8217;API con GET e POST.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-prossimi-approfondimenti\"><strong>Prossimi approfondimenti<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Implementazione di autenticazione con DRF.<\/li>\n\n\n\n<li>Uso di ViewSets e Routers per API pi\u00f9 strutturate.<\/li>\n\n\n\n<li>Deployment dell&#8217;API su un server di produzione.<\/li>\n<\/ul>\n\n\n\n<p>Adesso sei pronto per sviluppare API pi\u00f9 complesse.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h2 class=\"wp-block-heading\" id=\"h-happy-coding\">Happy Coding!<\/h2>\n\n\n\n<p><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Django REST Framework (DRF) \u00e8 uno degli strumenti pi\u00f9 potenti e flessibili per creare API RESTful in Python. Questo articolo ti guider\u00e0 passo dopo passo nella creazione del tuo primo endpoint API, illustrando l&#8217;uso di serializers, views e URL routing. Abbiamo visto nel mio articolo precedente come strutturare il primo progetto Django, se non l&#8217;hai&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/\">Read more<\/a><\/p>\n","protected":false},"author":317,"featured_media":32934,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[10263],"tags":[13310,13306],"collections":[11708],"class_list":{"0":"post-32850","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-backend-it","8":"tag-django-it","9":"tag-rest-it","10":"collections-dalla-community","11":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Inizia a creare API REST con Django REST Framework<\/title>\n<meta name=\"description\" content=\"Scopri come iniziare a creazione il tuo primo endpoint API REST, illustrando l&#039;uso di serializers, views e URL routing.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TechPills per tutti: Inizia a creare API REST con Django REST Framework\" \/>\n<meta property=\"og:description\" content=\"Scopri come iniziare a creazione il tuo primo endpoint API REST, illustrando l&#039;uso di serializers, views e URL routing.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-12T13:33:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-13T08:51:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1792\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"raffaelegrieco.it\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"raffaelegrieco.it\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/\"},\"author\":{\"name\":\"raffaelegrieco.it\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/49f7d5cbb5e20d151e460c3a9ce478d5\"},\"headline\":\"TechPills per tutti: Inizia a creare API REST con Django REST Framework\",\"datePublished\":\"2025-05-12T13:33:31+00:00\",\"dateModified\":\"2025-05-13T08:51:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/\"},\"wordCount\":861,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp\",\"keywords\":[\"Django\",\"REST\"],\"articleSection\":[\"Backend\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/\",\"name\":\"Inizia a creare API REST con Django REST Framework\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp\",\"datePublished\":\"2025-05-12T13:33:31+00:00\",\"dateModified\":\"2025-05-13T08:51:19+00:00\",\"description\":\"Scopri come iniziare a creazione il tuo primo endpoint API REST, illustrando l'uso di serializers, views e URL routing.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp\",\"width\":1792,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Backend\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"TechPills per tutti: Inizia a creare API REST con Django REST Framework\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/49f7d5cbb5e20d151e460c3a9ce478d5\",\"name\":\"raffaelegrieco.it\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/IMG_6306-100x100.jpg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/IMG_6306-100x100.jpg\",\"caption\":\"raffaelegrieco.it\"},\"description\":\"Aspiring Computer Engineer dedicated to crafting innovative solutions and tackling complex challenges. With a strong foundation in backend development, I also delve into frontend and mobile development to create seamless and comprehensive applications. Always eager to learn and explore new technologies to enhance my skills and contribute effectively to the developer community.\",\"sameAs\":[\"https:\/\/raffaelegrieco.it\",\"https:\/\/www.linkedin.com\/in\/raffaelegrieco\/\"],\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/raffaelegrieco-it\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Inizia a creare API REST con Django REST Framework","description":"Scopri come iniziare a creazione il tuo primo endpoint API REST, illustrando l'uso di serializers, views e URL routing.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/","og_locale":"en_US","og_type":"article","og_title":"TechPills per tutti: Inizia a creare API REST con Django REST Framework","og_description":"Scopri come iniziare a creazione il tuo primo endpoint API REST, illustrando l'uso di serializers, views e URL routing.","og_url":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2025-05-12T13:33:31+00:00","article_modified_time":"2025-05-13T08:51:19+00:00","og_image":[{"width":1792,"height":1024,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp","type":"image\/webp"}],"author":"raffaelegrieco.it","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"raffaelegrieco.it","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/"},"author":{"name":"raffaelegrieco.it","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/49f7d5cbb5e20d151e460c3a9ce478d5"},"headline":"TechPills per tutti: Inizia a creare API REST con Django REST Framework","datePublished":"2025-05-12T13:33:31+00:00","dateModified":"2025-05-13T08:51:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/"},"wordCount":861,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp","keywords":["Django","REST"],"articleSection":["Backend"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/","url":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/","name":"Inizia a creare API REST con Django REST Framework","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp","datePublished":"2025-05-12T13:33:31+00:00","dateModified":"2025-05-13T08:51:19+00:00","description":"Scopri come iniziare a creazione il tuo primo endpoint API REST, illustrando l'uso di serializers, views e URL routing.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp","width":1792,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/techpills-per-tutti-inizia-a-creare-api-rest-con-django-rest-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Backend","item":"https:\/\/www.codemotion.com\/magazine\/it\/backend-it\/"},{"@type":"ListItem","position":3,"name":"TechPills per tutti: Inizia a creare API REST con Django REST Framework"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/49f7d5cbb5e20d151e460c3a9ce478d5","name":"raffaelegrieco.it","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/IMG_6306-100x100.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/01\/IMG_6306-100x100.jpg","caption":"raffaelegrieco.it"},"description":"Aspiring Computer Engineer dedicated to crafting innovative solutions and tackling complex challenges. With a strong foundation in backend development, I also delve into frontend and mobile development to create seamless and comprehensive applications. Always eager to learn and explore new technologies to enhance my skills and contribute effectively to the developer community.","sameAs":["https:\/\/raffaelegrieco.it","https:\/\/www.linkedin.com\/in\/raffaelegrieco\/"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/raffaelegrieco-it\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--600x400.webp","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--600x600.webp","author_info":{"display_name":"raffaelegrieco.it","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/raffaelegrieco-it\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp",1792,1024,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--150x150.webp",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--300x171.webp",300,171,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--768x439.webp",768,439,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--1024x585.webp",1024,585,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--1536x878.webp",1536,878,true],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with-.webp",1792,1024,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--100x100.webp",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--180x128.webp",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--896x504.webp",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--400x225.webp",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--600x400.webp",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/DALL\u00b7E-2025-05-12-15.19.18-An-image-representing-the-concept-of-creating-REST-APIs-with-Django-REST-Framework-with-no-text-included.-The-scene-includes-a-modern-workspace-with--600x600.webp",600,600,true]},"uagb_author_info":{"display_name":"raffaelegrieco.it","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/raffaelegrieco-it\/"},"uagb_comment_info":0,"uagb_excerpt":"Django REST Framework (DRF) \u00e8 uno degli strumenti pi\u00f9 potenti e flessibili per creare API RESTful in Python. Questo articolo ti guider\u00e0 passo dopo passo nella creazione del tuo primo endpoint API, illustrando l&#8217;uso di serializers, views e URL routing. Abbiamo visto nel mio articolo precedente come strutturare il primo progetto Django, se non l&#8217;hai&#8230;&hellip;","lang":"it","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/32850","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/317"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=32850"}],"version-history":[{"count":4,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/32850\/revisions"}],"predecessor-version":[{"id":32959,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/32850\/revisions\/32959"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/32934"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=32850"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=32850"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=32850"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=32850"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}