Come funzionano le API Web? [chiuso]

16

Ho sentito parlare di molte API Web come quella di Facebook, Twitter, ecc., che aiuta i dati di accesso di terze parti e la manipolano. Mi piacerebbe sapere come funziona un'API web. Quali sono le basi di un'API Web?

Se voglio creare un'API per il mio sito, in modo che le persone possano accedervi o aggiornarlo, di cosa avrò bisogno per iniziare?

    
posta Harish Kurup 12.01.2011 - 11:15
fonte

3 risposte

23

Nel modo più semplice, crei una serie di richieste GET / POST che chiunque può chiamare e pubblicare le informazioni su URL, parametri ed effetti. Richiedi richieste per le attività di sola lettura e richieste POST per tutto ciò che cambierà i dati sul server.

Aggiungi un sistema di autenticazione se necessario e disponi di una semplice API Web.

Una API web è solo un Interfaccia per consentire l'accesso al tuo sistema (come il sito) tramite standard Metodi di richiesta HTTP . I dati stessi sono solitamente racchiusi in un formato standard (come JSON o XML ) per semplificare la gestione.

Ecco un esempio API Web per "TextWise"

    
risposta data 12.01.2011 - 11:24
fonte
5

Attualmente sto sviluppando un'API per la piattaforma di virtualizzazione della mia azienda. Puoi andare su di loro in diversi modi, ma il mio preferito (e il percorso più veloce per ottenere qualcosa che funzioni che le persone possano capire) sta usando semplici richieste HTTP GET e restituendo una risposta JSON.

Il mio URL ha un aspetto simile al seguente:

domain.com/method/call/subcall?key=key&data=something

Quindi suddivido le variabili HTTP GET e faccio ciò che il chiamante vuole fare con esse. Uno dei motivi principali per cui mi sono iscritto come utente beta allo sviluppo dell'API di Stack Exchange era che sapevo che sarebbe stata un'esperienza di apprendimento straordinaria e in effetti è stato .

Di solito, restituisco due array con codifica JSON, uno essendo result , che in pratica dice solo se la chiamata ha avuto successo e fornisce un codice di errore / stringa di errore se non lo è. L'altro è di solito chiamato solo data , e il suo contenuto è descritto nella documentazione di quella particolare chiamata. Inoltre, le API basate su GET sono molto più facili da testare e eseguire il debug.

Esistono molti altri formati, come SOAP / XMLRPC, ma trovo che scegliere JSON mi dà incredibile semplicità e libertà di scelta.

Ad esempio, se devo inviare un lotto di campi e non voglio occuparmi di una tonnellata di variabili GET, posso solo farlo (esempio in PHP)

$to_send = base64_encode(json_encode($some_array));

Questo è facilmente decodificato dall'altra parte, dandomi dozzine di variabili con cui lavorare, accettando comunque solo 2 - 3 variabili GET tramite l'API.

Cerco solo di mantenere i miei metodi e le chiamate brevi e concise, e di progettarlo in modo tale che ogni chiamata restituisca una risposta uniforme "lavorata o fallita", seguita dai dati richiesti.

    
risposta data 12.01.2011 - 11:39
fonte
2

Questa è in realtà una domanda molto ampia. Nel senso più semplice, un'API Web funziona quando un client (come un browser Web) effettua una richiesta HTTP di qualche tipo su un server Web. Il server esamina la richiesta per capire cosa vuole l'utente, quindi restituisce i dati in un formato (come una pagina) che il cliente esamina per ottenere ciò che desidera. Queste sono solo le uniche cose che le API Web hanno in comune; Mi rendo conto che questo non risponde alla tua domanda, ma volevo dare una ragione per cui la domanda è così ampia.

Ci sono tutti i modi in cui un client può formattare la sua richiesta, o che un server può formattare la sua risposta, e così per avere un senso, il client e il server devono concordare alcune regole di base. In generale, al giorno d'oggi ci sono due stili molto generali che vengono usati per questo genere di cose.

Remote Procedure Call (RPC)

In un'API in stile RPC, di solito c'è solo un URL per l'intera API. Si chiama POST di un documento di qualche tipo che contiene informazioni su ciò che si vuole fare e il server restituisce il documento che ha ciò che si desidera. In termini di calcolo generale, il documento di richiesta ha in genere un nome di funzione e alcuni argomenti.

Alcuni standard per questo tipo di API includono XML-RPC e SOAP. Questi standard tentano di creare un formato che può essere utilizzato per descrivere le chiamate di funzione che stai facendo o anche per descrivere l'intera API.

Trasferimento stato rappresentativo (REST)

In un'API in stile REST, non hai così tanto un URL per l'API come spazio dei nomi : un server o una cartella all'interno di un server, dove molti oggetti diversi risiedono e ogni URL all'interno di questo spazio dei nomi diventa parte dell'API. Piuttosto che dire al server che vuoi usare l'API, l'URL dice al server che cosa vuoi usare l'API su . Quindi usi il metodo HTTP, e possibilmente il corpo della richiesta, per spiegare cosa vuoi fare a quell'oggetto: GET (recupera qualcosa che è già lì), POST (crea qualcosa di nuovo), PUT (sostituisci qualcosa che è già lì), o DELETE (sbarazzarsi di qualcosa che è già lì). Ci sono alcuni altri verbi che puoi usare, ma quelli sono di gran lunga i più comuni.

Finora, non ho menzionato i formati standard per REST. In teoria, potresti usare praticamente qualsiasi formato. HTTP già prevede di dire cosa vuoi fare e cosa vuoi fare, quindi il formato del corpo della richiesta potrebbe essere qualsiasi cosa: qualche rappresentazione dell'oggetto che vuoi creare o sostituire. Ma in pratica, gli autori REST tendono ad accordarsi su un formato in ogni caso, perché sarebbe difficile dare un senso a ogni possibile formato.

    
risposta data 24.09.2013 - 18:45
fonte

Leggi altre domande sui tag