Tornando dati all'utente (Good API Design)
-
22-08-2019 - |
Domanda
Così adesso ho sviluppato un'applicazione che sto cercando di scrivere un'API per. L'applicazione sarà idealmente restituire stringhe indietro per l'utente. L'API non può "restituire" i dati nel normale programmazione senso perché ci può essere una quantità sconosciuta di stringhe vengono inviati dall'applicazione. Sui sistemi Unix è una cattiva idea di passare questo dati all'utente attraverso un tubo di nome? Ho avuto problemi a trovare tutte le informazioni sui dettagli della creazione di API. Grazie per qualsiasi aiuto.
Soluzione
L'API non può "ritorno" dei dati nel senso normale di programmazione perché ci può essere una quantità sconosciuta di stringhe di essere inviati dall'applicazione. Sui sistemi Unix è una cattiva idea di passare questo dati all'utente attraverso un tubo chiamato?
In Unix è comune per un programma per produrre i suoi dati, come più dati che vuole, forse un sacco di dati, scrivendo i dati a 'standard output'. L'utente può pipe questa uscita th schermo o in un file, o tubo come input ad un altro programma (che potrebbe, per esempio, filtrare i dati).
Ho avuto problemi a trovare tutte le informazioni sui dettagli della creazione di API.
http://www.faqs.org/docs/artu/ è abbastanza famoso, FWIW: http://www.faqs.org/docs/artu/ ch07s02.html # idraulico dice qualcosa (con qualche esempio) sull'utilizzo di tubi, di dati in uscita da un programma in un altro programma.
Altri suggerimenti
dipende dall'applicazione. Se si tratta di uno strumento a riga di comando di breve durata, quindi leggere-da-stdin / write-to-stdout modello funziona perfettamente. grep / sed / awk / perl sarebbe preso cura di post-elaborazione dei dati. Se si tratta di un demone, allora FIFO, o una presa di corrente potrebbe essere una buona idea, anche se si potrebbe pensare a una sorta di protocollo client-server su quel flusso. Andando un passo avanti a fornire una libreria che sa che il protocollo e dà applicazione scrittore un insieme coerente di funzioni di parlare con la vostra applicazione potrebbe essere un vero e proprio API. Questo è il classico client-server, è così che la maggior parte del lavoro di database, per esempio.