2012-02-16 25 views
14

Tôi đang tìm cách triển khai một máy khách REST trong PHP và trước đó đã sử dụng phiên bản sửa đổi của CakePHP Webservice Behavior, khá gần với những gì tôi đang tìm kiếm, nhưng tôi không xây dựng trên Bánh, danh sách.Ứng dụng REST đơn giản nhưng được thiết lập/hoàn chỉnh cho PHP?

Tôi đang tìm một máy khách REST cho phép tôi thực hiện các yêu cầu REST cơ bản và lấy lại các tiêu đề/phần thân của yêu cầu. Không bắt buộc, nhưng mong muốn các tính năng:

  • HTTP Basic Authentication
  • Tiếp theo chuyển hướng
  • Sao tắt và tái yêu cầu các yêu cầu thất bại

Tôi đã đọc qua otherSOthreads và đã tìm thấy một một loạt các câu trả lời vô ích mà chủ yếu bao gồm "chỉ tự viết, không khó" hoặc "sử dụng cURL" (ví dụ như cụm từ trước) hoặc "đây là đoạn mã sẽ thực hiện" (chắc chắn chưa được thiết lập hoặc mạnh) . This question là khả năng hữu ích nhất, nhưng nó có ở trên, cộng với hai self-rolledlibraries được đăng bởi tác giả của chúng rất cơ bản và thiếu một số tính năng ở trên và trong khi chúng có thể thực hiện thủ thuật, hầu như không được thiết lập hoặc duy trì như tôi muốn.

Câu hỏi đó cũng liên kết đến Guzzle, có vấn đề ngược lại - trong khi mạnh mẽ và được hỗ trợ tốt, có vẻ cực kỳ phức tạp, khó cấu hình và thiết lập và nhiều hơn tôi đang tìm kiếm. Vì vậy: có ai biết về một khách hàng REST được thiết lập cho PHP mà chỉ yêu cầu REST, nhỏ và tập trung (tôi đang nghĩ một, có thể là hai tệp PHP), nhưng được sử dụng rộng rãi và được hỗ trợ không? Không. Tôi không tìm kiếm một khuôn khổ hoặc một cuộc cách mạng trong việc sử dụng HTTP - chỉ là một thư viện để thực hiện các yêu cầu REST cơ bản. Tôi không muốn phát minh lại bánh xe một lần nữa và hàng nghìn (nếu không phải hàng triệu) dự án PHP sử dụng REST mỗi ngày, tôi ngạc nhiên là tôi không tìm thấy thứ gì như thế này.

Có rất nhiều thư viện máy chủ REST chất lượng có sẵn - tại sao không phải là máy khách REST? Tôi về cơ bản tìm kiếm một cái gì đó như Tonic, nhưng là một khách hàng. Pest (từ trên cao) trông rất được xây dựng và gần nhất, nhưng tôi chỉ ngạc nhiên là không có thứ gì được thiết lập nhiều hơn.

+0

Một lời nhắc nhở nhắc tôi rằng tôi chưa bao giờ chấp nhận câu trả lời ở đây. Tôi đã kết thúc bằng cách sử dụng [Pest] (https://github.com/educoder/pest) như được liên kết trong câu hỏi của tôi - nó thực hiện tốt công việc, không có quá nhiều sự phô trương hoặc mã phụ mà tôi không sử dụng. Tôi đã kết thúc chỉ không thực hiện backoff mũ, tuy nhiên - nếu tôi cần, tôi sẽ cung cấp cho Guzzle một cái nhìn khác. – cincodenada

Trả lời

11

Có rất nhiều tính năng nâng cao trong Guzzle, nhưng tôi vẫn nghĩ bạn có thể dễ dàng sử dụng nó cho các yêu cầu tối thiểu của mình.

  1. Tải tập tin Phar bao gồm tất cả các lớp học bạn sẽ cần từ trang phát hành GitHub của họ: https://github.com/guzzle/guzzle/releases
  2. Bao gồm các tập tin Phar trong ứng dụng của bạn (điều này sẽ cấu hình một autoloader cho tật ham ăn)
  3. Tạo một khách hàng
  4. Đính kèm một ExponentialBackoffPlugin cho khách hàng
  5. Gửi yêu cầu từ khách hàng

Ví dụ:

<?php 

// Include the phar and register the autoloader 
require 'guzzle.phar'; 

// Create a client for http://test.com (binding to a host is optional) 
$client = new Guzzle\Http\Client('http://test.com'); 

// Attach the exponential backoff plugin to the client so that requests 
// are retried automatically 
$client->addSubscriber(Guzzle\Plugin\Backoff\BackoffPlugin::getExponentialBackoff()); 

// Create and send a GET request to grab the response 
$response = $client->get('/foo.json')->send(); 

// Dump the JSON response data as an array 
var_dump($response->json()); 
+0

Câu trả lời hay, rất dễ hiểu. –

+0

Tôi có thể tải xuống guzzle.phar ở đâu? – BILL

+0

Liên kết bị hỏng, nhưng bạn có thể tìm thấy tệp guzzle.phar cho mỗi bản phát hành tại đây: https://github.com/guzzle/guzzle/releases – w5m

6

Bạn có thể xem Requests hoặc thậm chí HTTP PECL library. Tuy nhiên, chúng chỉ liên quan đến quá trình yêu cầu/phản hồi HTTP. Bạn có thể tìm kiếm nhiều hơn thế? Thiết kế REST cắt rất nhiều với giao thức HTTP mà không có nhiều trừu tượng hơn rằng có thể được xây dựng trên đầu trang của nó.

-2

cURL khá rõ ràng, PHAR yêu cầu một nhóm thiết lập. Nếu bạn muốn có tùy chọn REST thực sự đơn giản, hãy thử điều này:

print file_get_contents ('http://php.net/');

Các vấn đề liên quan