Richiesta / risposta, come si dovrebbe iniziare l'invio effettivo della trasmissione?

1

Sto lavorando su interfacce di livello linguistico alle API web. Queste librerie sono ovviamente costruite attorno alle interfacce di richiesta / risposta HTTP esistenti. Mi vedo come se avessi alcune opzioni

invia il metodo sull'oggetto richiesta e.g

my $req = Request->new( ... );

my $response = $req->submit; # returns response

my $res2     = $req->submit; # sends the same request again

lazy request accessor

my $req = Request->new( ... );

my $response = $req->response; # returns a reference to the response

my $res2     = $req->response; # doesn't send again, just returns the reference

$req->clear_response;          # clears the response value

my $res3     = $req->response; # sends again because no response exists

Queste sono le 2 opzioni a cui sto pensando. Ho visto più esempi del primo, ma non sono sicuro se c'è una ragione per cui. Avete qualche preferenza su quale interfaccia di stile? o ci sono altri modi a cui non sto pensando? Nel complesso sto cercando di discernere quale sia la migliore API per recuperare la risposta.

    
posta xenoterracide 30.03.2012 - 23:32
fonte

1 risposta

1

La maggior parte delle persone che vogliono mantenere un riferimento alla stessa risposta intorno salverà solo $response da qualche parte. La tua seconda opzione viola il principio di responsabilità unica per il metodo e lo rende imprevedibile. A volte response restituisce un vecchio riferimento e talvolta invia una nuova richiesta. Aggiunge anche ulteriori passaggi se si desidera inviare un'altra richiesta. È ovvio in una piccola funzione, ma se un sacco di codice interviene tra le richieste, non saprai con certezza se hai bisogno o vuoi fare prima un clear per generare una nuova risposta.

Se si imposta la memorizzazione nella cache della risposta nell'oggetto Request , farei almeno un nome separato da quello che lo invia. Ad esempio, $response = $req->submit per inviarlo effettivamente e $req->response se vuoi solo recuperare l'ultima risposta memorizzata nella cache.

    
risposta data 31.03.2012 - 00:08
fonte

Leggi altre domande sui tag