Come falsificare un'API di terze parti

Sep 03 2020

La nostra applicazione effettua chiamate a un'API di terze parti per completare alcune attività.

Questo endpoint ha un problema nell'ambiente di test e la direzione ci ha chiesto di deridere questo ambiente in modo che quando l'app o chiunque provi a chiamare www.test.com dalla macchina di test, ottiene informazioni da un server fittizio anziché dal www effettivo .test.com .

Ho provato a capire diverse opzioni ma tutto prende in giro se creiamo un oggetto fittizio e quindi chiamiamo l'oggetto fittizio.

Sto cercando di capire un modo in cui ogni volta che qualcuno chiama www.test.com dovrebbe mostrare il contenuto da localhost.

Non voglio modificare il file host. C'è un altro modo?

Aggiornare:

App configurabile, in modo da poter specificare quale endpoint l'app deve chiamare.

Ho usato Mockserver in Postman per simulare questo. Ma postmand non supporta i parametri di query

quindi per v1 / api? q = 1 e v1 / api? q = 2 restituisce la stessa risposta

Qualcuno potrebbe aiutare a creare un mockserver che dia risposte diverse per parametri di query diversi

Risposte

1 NielsvanReijmersdal Sep 04 2020 at 18:11

Abbiamo una buona esperienza con json-server. Lo abbiamo trovato davvero flessibile.

Ottieni un'API REST falsa completa con zero codifica in meno di 30 secondi (seriamente)

Creato con <3 per sviluppatori front-end che necessitano di un back-end rapido per prototipazione e mocking.

https://github.com/typicode/json-server

Può eseguire il server da file json statici, in cui ogni ID restituisce un valore diverso. Oppure puoi utilizzare JavaScript per generarli. È possibile modificare i dati in base all'ID, fornire dati casuali, ruotare i set di dati, ecc ...

Hanno anche una versione ospitata per te se vuoi testare su Internet. I piccoli set di dati sono gratuiti:https://my-json-server.typicode.com/

1 Moro Sep 05 2020 at 14:53

Secondo i documenti di Postman :

Se non viene trovata una corrispondenza esatta, Postman restituirà la migliore risposta corrispondente in base al suo algoritmo.

Ho testato il server fittizio e funziona con i parametri di query, tuttavia l'algoritmo punta a un valore predefinito quando non si prende in giro il parametro. Nel mio caso:

?id=1punta a 200con okpagina
?id=2punta a 404con bad requestpagina
?id=3e così via non è implementato e il server fittizio restituisce la pagina 200with ok.

1 dzieciou Sep 05 2020 at 15:16

Se accetti la derisione con pacchetti diversi da Postman, ti suggerisco di utilizzare MockServer o WireMock , entrambi con supporto per la descrizione delle regole di corrispondenza in Java e JSON.

Ad esempio, con WireMock puoi abbinare la richiesta HTTP per URL e stringa di query come segue :

Corrispondenza con espressioni regolari su percorso e query

Giava:

urlMatching("/your/([a-z]*)\\?and=query")

JSON:

{
  "request": {
    "urlPattern": "/your/([a-z]*)\\?and=query"
    ...
  },
  ...
}
1 QuantumNinja Sep 10 2020 at 07:24

Puoi impostare i parametri env e poi usarli per controllare con quali API parla la tua app? È possibile utilizzarlo per impostare facilmente indirizzi API di sviluppo, test e produzione.