Quali endpoint devo fornire, se esistono, per consentire il test di connettività per i miei servizi web?

2

Quali endpoint devo fornire, se esistono, per consentire il test di connettività / disponibilità per i miei servizi Web / API Web?

TL; DR

Sto sviluppando sia il server che il client in un ambiente aziendale. Il client si interfaccia con il server tramite un'API Web RESTful. Vorrei fornire un'indicazione all'utente che ha inserito correttamente l'URL di root dell'API Web correttamente. Vorrei anche implementare il monitoraggio della connettività dell'API in futuro.

Nessuna delle API pubbliche (Facebook, Twitter, ecc.) che è stata vista ha un punto finale dedicato per i test di connettività. Esistono numerosi siti Web che forniscono il monitoraggio della disponibilità delle API pubbliche. Uno di questi, Watchmouse, ha segnalato che preforma i test di disponibilità eseguendo effettivamente l'API (accesso, esecuzione di un'azione e testare i risultati) .

D'altro canto, l'URL root per CouchDB restituisce e il messaggio configurabile e la versione CouchDB.

Devo fornire endpoint dedicati per test di connettività / disponibilità? In caso affermativo quali endpoint? O dovrei semplicemente esercitare gli endpoint esistenti?

    
posta Adrian Toman 20.03.2013 - 07:44
fonte

2 risposte

4

Includo un metodo come questo in tutti i miei servizi web

string GetVersion()

Quale appena restituisce la versione dell'assembly in esecuzione sul server. Fornisce un modo semplice per eseguire il ping del servizio per assicurarsi che sia in esecuzione. Come effetto collaterale, in realtà ti fornisce alcune informazioni utili sul server.

Ovviamente non è buono come quello di esercitare effettivamente l'API, ma è abbastanza facile da aggiungere a qualsiasi servizio esistente.

Personalmente, non penso che sia necessario definire qualcosa di più. Se si desidera testare il servizio di funzionalità, sarà necessario utilizzare i metodi di servizio effettivi.

    
risposta data 20.03.2013 - 08:10
fonte
0

Se la radice restituisce un documento ben definito che è univoco per il server, allora qualsiasi client può dire che è stato inserito correttamente. Perché desideri qualcosa di più?

Oltre al suggerimento di p.s.w.g di un 'GetVersion ()', puoi anche fare una richiesta HEAD e vedere se il server risponde. Sarebbe sufficiente un valore previsto per l'intestazione di risposta "Server:"?

Vuoi implementare il monitoraggio della connettività dell'API in futuro. Supporterai più versioni? In altre parole, il problema con un'API GetVersion () è che è necessario modificare client e server contemporaneamente. In caso contrario, un client v2 si rifiuterà di connettersi a un server v3, anche se il servizio v3 è retrocompatibile in modo che i client v2 e v3 possano connettersi ad esso.

Un modo per gestirli è che la radice restituisca un documento contenente un elenco di punti di servizio, in cui i punti sono versioni. Personalmente, questo è quello che faccio. Ad esempio, potrebbe puntare a servizi gestiti su altre macchine.

Un altro è includere un valore di versione nella richiesta e lasciare che il server capisca cosa fare. Un terzo è solo andare avanti e provare nuovi punti di ingresso API, e se c'è un errore allora il server non è abbastanza nuovo.

Forse più utile di qualcosa che restituisce la versione del server è una pagina di diagnostica di riepilogo, che mostra che il server è attivo, che è in grado di connettersi al database (se ne hai uno), ecc. Ma la determinazione di cosa dipende dalla tua situazione.

    
risposta data 20.03.2013 - 14:50
fonte

Leggi altre domande sui tag