> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrazione API

> Devin può integrare, configurare e testare API di terze parti nelle tue applicazioni.

<div id="integrating-sendgrid-into-an-application">
  # Integrazione di SendGrid in un'applicazione
</div>

La nostra applicazione di esempio è una piattaforma educativa online sviluppata con il framework web Python Django. Di recente è stata aperta una [PR](https://github.com/uncc-hice/edukona_backend/pull/47) per integrare l'API email di SendGrid nell'applicazione e, in questo tutorial, faremo provare a Devin a creare una propria implementazione di SendGrid per mostrare come può interagire con API di terze parti.

<div id="initial-prompt">
  #### Prompt iniziale
</div>

Nel nostro prompt forniamo alcune istruzioni specifiche su come e dove vogliamo che Devin integri i nostri hook SendGrid e facciamo sì che Devin torni a un commit hash precedente, prima che la PR sopra fosse stata unita, per avere un punto di partenza pulito per la nostra integrazione. Segui la sessione live di Devin [qui](https://app.devin.ai/sessions/05d9bf38b65d4aa9a16a5c16c8b5fc5e).

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/01469dde6757a54d39579647204db2d8ad316b75-1334x536.png)
</Frame>

Devin analizza la codebase e verifica che non ci sia già nell’applicazione un’implementazione della funzionalità email che vada in conflitto.

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/daa91bce25d55187d9f637c3e195c65650eb9128-1256x592.png)
</Frame>

<div id="implementing-sendgrid">
  #### Implementazione di SendGrid
</div>

Passa quindi all’implementazione dell’API di SendGrid e ci chiede le credenziali dell’API, che possiamo configurare come [Secrets](/it/product-guides/secrets) nell’ambiente di Devin, così che possa accedervi in futuro come variabili ENV.

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/1dc4794dca5a5eec9632fa106930b4ba623449f7-1310x1622.png)
</Frame>

Ora che dispone di credenziali API corrette, Devin completa l’implementazione di SendGrid.

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/101faac5f7d36b18c622cef27a9f700f4a22547f-1294x1634.png)
</Frame>

Quando confronto l’implementazione di SendGrid di Devin con la PR effettivamente mergeata che abbiamo collegato all’inizio, noto alcuni miglioramenti significativi:

* Devin ha configurato SendGrid in un nuovo modulo email.py invece che nello stesso file della view. Inoltre, restituisce True o False per indicare se l’invio dell’email è andato a buon fine in base al codice di risposta di SendGrid.
* Devin utilizza il modulo di logging integrato di Python anziché print (che era un pattern su cui il revisore della PR aveva lasciato un commento specifico).
* Devin rende inoltre configurabile l’indirizzo email From invece di lasciarlo hardcoded, ma aggiunge anche un valore predefinito se la variabile ENV non esiste.
* Devin aggiunge la gestione delle eccezioni al suo metodo mailInstructor.

Una volta terminata l’implementazione principale, posso chiedere a Devin di testare l’applicazione aggiungendo un account istruttore con il mio indirizzo email. Per testare l’applicazione, dovrà anche provvedere a installare e configurare tutte le dipendenze, come un server PostgreSQL e le relative librerie Python.

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/162781b998d454f43ffb8ff226a8f7b50568800e-1282x796.png)
</Frame>

<div id="debugging">
  #### Debugging
</div>

Devin incontra rapidamente un errore, perché non gli ho mai fornito un indirizzo mittente (FROM) per il mio account SendGrid. Devin usa il suo [Browser](/it/work-with-devin/devin-session-tools#interactive-browser) per aprire la documentazione delle API, capire cosa sta succedendo e comprendere i messaggi di errore e le best practice di implementazione:

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/808fb112960206f72c6f451ad12a89c1dea709bd-1308x1062.png)
</Frame>

Posso tornare nella finestra di dialogo Secrets e aggiungere una variabile SENDGRID\_FROM\_EMAIL a cui Devin possa accedere.

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/7c0db2df23075a74594b00fd254f27c7745bf2a2-1520x744.png)
</Frame>

Inoltre, indico a Devin di usare il nome utente predefinito di SendGrid "apikey", dato che non ho configurato un subaccount per le API:

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/77939146f2fd5baba1ac90ecac5111e4901db2b3-1312x1394.png)
</Frame>

<div id="adding-knowledge">
  #### Aggiunta della Knowledge
</div>

Devin rileva che le mie richieste e i requisiti di implementazione possono essere generalizzati e mi invita ad aggiungere della [Knowledge](/it/product-guides/knowledge#what-is-knowledge) che potrà utilizzare in futuro:

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/528762e066c609f5c408fcb4a55eadead2b59d0e-2522x828.png)
</Frame>

Se lo desideri, puoi anche modificare la Knowledge per aggiungere dettagli ancora più specifici, se ritieni che queste tattiche possano essere utili nelle future sessioni pianificate dal tuo team.

<div id="testing">
  #### Test
</div>

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/4d8fcae26a4eb91b734d53ec23e09a0aaca31f51-1346x1312.png)
</Frame>

Dopo alcuni minuti di configurazione dell'ambiente, Devin termina la sessione con successo e vedo l'email nella mia casella di posta. In realtà non ho configurato il modello SendGrid con contenuto reale, ma la richiesta API funziona e quindi il lavoro di Devin è concluso!

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/36f648f15ccc4fc49c89ec2d9e6de8ace491ff2e-1406x882.png)
</Frame>

Se scelgo di inviare una PR, Devin ha già preparato il messaggio per me, con i dettagli di tutto ciò che ha modificato nell'applicazione e di come funziona:

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/1a3375d78dce3cb1122332bd8566041946a73791-2206x1094.png)
</Frame>

Registrati oggi per [provare Devin](https://cognition.com/get-started#company) e affrontare un'integrazione API che sta pesando sul backlog del tuo team.
