2015-06-14 11 views
8

Sto usando lumen cercando di impostare semplici richieste API via guzzle.base_uri non essendo basato sull'istanza del client guzzle

Il problema è che il parametro base_uri non sembra essere passato correttamente sullo new Client() iniziale.

esempio semplificato:

use GuzzleHttp\Client; 

$client = new Client([ 
    'base_uri' => 'https://siteurl.com/api/v2' 
]); 

quindi chiamando l'API tramite ottenere

$res = $client->get('orders', [ 
    'query' => [ 
     'status' => 'completed' 
    ] 
]); 

non funziona. Sono stato attento a non utilizzare URL assoluti come /orders. Se ignoro interamente base_uri e lo aggiungo semplicemente al metodo get $client->get('https://siteurl.com/api/v2/orders'), funziona.

sto usando: "laravel/lumen-quadro": "5.0. *", "guzzlehttp/guzzle": "^ 6.0"

* Follow-up:

Ho aggiunto il flag di debug in modo da poter confrontare le intestazioni e la differenza evidente è nella riga di richiesta di ottenere.

URL assoluto nella (base_uri bypassando) metodo get:?

GET/api/v2/Stato Ordini = completato HTTP/1,1

Utilizzando base_uri (versione viene spogliato):

GET/api/ordini? status = completato HTTP/1,1

+0

Ti è capitato di capirlo? Sto avendo lo stesso identico problema, e ho il mio base_uri terminato con un/come suggerito nella risposta. –

+0

Ignora il mio commento. Stavo guardando la documentazione sbagliata per la mia versione di guzzle. La versione più recente utilizza base_uri e sono tornato su una versione precedente che utilizzava invece base_url. –

+0

@PaulZepernick La soluzione che ho suggerito di lavorare per te? –

risposta

18

Hai bisogno di interrompere l'base_uri con una barra/

esempio

use GuzzleHttp\Client; 

$client = new Client([ 
    'base_uri' => 'https://siteurl.com/api/v2/' 
]); 

Edit: Nota che base_uri è per Guzzle 6+, mentre le versioni precedenti usati base_url.

+4

Il tuo ultimo commento è ciò che mi ha salvato. Confermato che usando 'base_url' con una barra in avanti che termina l'url funziona con Guzzle 5 –

Problemi correlati