2017-07-03 72 views
0

我使用Laravel(我在Laravel是新)

我必須做出連接beetween我的網站和外部API(沒有從我的網站發送請求。 )。

我想從api獲取POST數據到路由。

我做了什麼:

路線/ web.php

/** 
* routes test 
*/ 
Route::any('/photo/test', [ 
    'uses' => '[email protected]', 
    'as' => 'test.show' 
]); 

控制器:

class TestController extends Controller 
{ 
    /** 
    * 
    * @return string 
    */ 
    public function show(Request $request) 
    { 

     var_dump($_GET); 
     var_dump($_POST); 
     die(1); 
    } 
} 

我查了一下,從API側有發送POST數據,但在laravel超全局數組$我們可以在上面看到_POST和$ _GET是空的(在var_dump()函數中)。

我也加入到exeption爲VerifyCsrfToken那些路線:

class VerifyCsrfToken extends BaseVerifier 
{ 
    /** 
    * The URIs that should be excluded from CSRF verification. 
    * 
    * @var array 
    */ 
    protected $except = [ 
     "photo/test" 
    ]; 
} 

倒是異常後,我仍然有空字符串一個問題...

誰能幫助?

+0

看看guzzle:https://github.com/guzzle/guzzle – Christophvh

+1

外部API必須發送POST HTTP請求。 – tilz0R

+0

@ tilz0R我檢查了 - 沒問題。 –

回答

0

不要使用$_GET$_POST與Laravel而是使用請求對象:

public function show(Request $request) 
{ 
    dump($request->input()); 

    die(1); 
} 

https://laravel.com/docs/5.4/requests#retrieving-input

希望這有助於!

+0

謝謝你我的朋友,但是,我已經嘗試過使用$ _POST superglobal之前。我也嘗試使用$ request-> all()方法,但它也是空的。這很奇怪... –

+0

@ Z.S你是如何向路線發出發佈請求的? –

+0

我有一個帳戶,它提供了一個選項,可以將POST請求從這些api發送到我的網站進行測試。我是這樣做的,在這些應用程序中可以選擇提供獲取請求的路線。所以我寫了我的網站+ route('www.example.com/photo/test')。這一切都OK,因爲如果我在控制器中使用var_dump()函數返回一些數據,API可以得到它。但我不知道如何獲取由$ _POST方法從api發送的數據。當我改變我的領域在空項目上做出同樣的事情(與laravel不同,例如在單詞按下時)我可以訪問POST –