2014-03-12 4 views
78

내가 원하는 것은 외부 API에 HTTP (예 : jQuery의 AJAX) 요청을 사용하여 API에서 객체를 가져 오는 것입니다. 어떻게 시작합니까? 저는 미스터 구글에 대한 연구를했는데 도움이되는 것을 찾을 수 없습니다.Laravel에서 외부 API로 HTTP 요청하기

나는이게 가능한가 궁금한가? 이 게시물에서 Laravel 4 make post request from controller to external url with data 마치 할 수있는 것처럼 보입니다. 그러나 일부 문서를 찾을 수있는 곳도 어디에도 없습니다.

도와주세요.

+8

오랜 시간이 지난 후, Guzzle을 사용하는 방법에 대해 아주 작은 흙을 만들었습니다. aisnoek에서 그의 대답. http : // chilion.nl/laravel-post-requests-with-guzzle/ – Chilion

+0

아직도 Curl을 사용하고 싶다면 curl이 PHP의 jQuery ajax라고 말할 수 있습니다. – killstreet

답변

96

: https://stackoverflow.com/a/22695523/1412268

가에서 봐 Guzzle

$client = new GuzzleHttp\Client(); 
$res = $client->get('https://api.github.com/user', ['auth' => ['user', 'pass']]); 
echo $res->getStatusCode(); // 200 
echo $res->getBody(); // { "type": "User", .... 
Laravel 심포니의 요청 패키지에 의존하기 때문에 당신은 Laravel를 사용하여 요청을 할 수 16,
+1

또한 Jeremie Ges의 답변을 참조하십시오. \t 사실, Laravel에 관한 내 질문에 대한 답변이 없지만 위의 내용을 살펴볼 것입니다. 감사! – Chilion

+0

@Chilion, Al Snoek는 공식 Laravel 패키지로 안내해 드렸습니다. Laravel 공급 업체 그룹에 사전 설치되어 있습니다. – GoogleMac

31

외부 URL을 호출하여 결과를 사용하기 만하면됩니까? 방법의 예 부하를

$json = json_decode(file_get_contents('http://host.com/api/stuff/1'), true); 

당신이 게시 요청을하려면 조금 단단하지만 거기에 우리가 JSON을 제공 뭔가 간단한 GET 요청에 대해 이야기하는 경우 PHP는 상자에서이 작업을 수행 이것을 컬으로하십시오.

그래서 나는 질문을합니다; 정확히 무엇을 원하니?

+0

REST API의 모든 종류의 기능을 사용할 수 있기를 원합니다. 그래서 네, POST가 필요할 것입니다. 나는 Laravel이 Laravel에서 그것을 할 수있는 몇 가지 방법을 가질 것이라고 생각했지만 (희망) ... 그렇다면 PHP에 충실 할 것이다. 감사. – Chilion

1

당신은 Httpful를 사용할 수 있습니다

웹 사이트 : http://phphttpclient.com/

Github에서 : 여기에 비슷한 질문의 답에 근거하여 https://github.com/nategood/httpful

+0

Laravel에 관한 내 질문에 실제로 대답하지는 않지만 멋지게 보입니다. 확실히 살펴볼 것입니다. 감사! – Chilion

+0

Laravel은 이것을 상자에서 꺼내지는 않았지만 Laravel은 작곡가 밑에서 운영되므로 Httpful과 같은 라이브러리를 사용하여 작업을 완료 할 수 있습니다. 그런데도 http://requests.ryanmccue.info/ –

+0

을 사용할 수 있습니다. Laravel은 작곡가에 속하므로 모든 패키지는 공정한 게임입니다. – kratos

1

및없이 외부 패키지

$request = \Illuminate\Http\Request::create('http://your-api.com', 'POST', ['param1' => 'value1', 'param2' => 'value2']); 

요청 기능이 제공됩니다. 당신은 단지 외부 API에 요청을 해고해야 할 경우 응답의 콘텐츠를해야하는 경우

$request = Request::create('http://your-api.com', 'GET'); 

그러나 (당신은 GET 요청을 사용 가정)는 다음과 같이

+13

Request 클래스는 요청의 다양한 속성에 더 쉽게 액세스 할 수있게 해주는 컨테이너입니다. 위의 코드를 실행하면 객체가 생성되지만 엔드 포인트에 대한 실제 HTTP 요청을 수행하지는 않습니다. –

11

, 당신은, Laravel 요청 클래스를 사용할 수 있습니다 다음과 같이 Laracurl 패키지를 사용할 수 있습니다

$response = Laracurl::get('http://your-api.com'); 
55

우리는 패키지 Laravel에 목구멍 사용할 수 있습니다, HTTP 요청을 보낼 수있는 PHP의 HTTP 클라이언트입니다.

당신은 작곡가

composer require guzzlehttp/guzzle:~6.0 

를 통해 목구멍을 설치하거나 프로젝트의 기존 composer.json의 종속성으로 폭식을 지정할 수 있습니다

{ 
    "require": { 
     "guzzlehttp/guzzle": "~6.0" 
    } 
} 

laravel 아래 그림과 같이 목구멍을 사용하여 5 예제 코드,

use GuzzleHttp\Client; 
class yourController extends Controller { 

    public function saveApiData() 
    { 
     $client = new Client(); 
     $res = $client->request('POST', 'https://url_to_the_api', [ 
      'form_params' => [ 
       'client_id' => 'test_id', 
       'secret' => 'test_secret', 
      ] 
     ]); 
     echo $res->getStatusCode(); 
     // "200" 
     echo $res->getHeader('content-type'); 
     // 'application/json; charset=utf8' 
     echo $res->getBody(); 
     // {"type":"User"...' 
} 
+2

답변 해 주셔서 감사합니다. 내 게시물 아래 내 의견을 참조하십시오; \t \t \t 나중에 오랜 시간이 지나면, Guzzle을 사용하는 방법이 정말 작아졌습니다. aisnoek에서 그의 대답. chilion.nl/laravel-post-requests-with-guzzle - Chilion Aug 19 at 12:09 √ – Chilion