Подтвердить что ты не робот

Клиенты PHP REST

Я пытаюсь подключиться к веб-сервису RESTful, но у меня возникают некоторые проблемы, особенно при отправке данных через PUT и DELETE. С помощью cURL PUT требует отправки файла, а DELETE просто странно. Я отлично умею писать клиента, используя поддержку PHP-сокетов, и сам писать заголовки HTTP, но я хотел знать, использовали ли вы когда-либо ребята или видели REST-клиент для PHP?

4b9b3361

Ответ 1

Итак, Zend_Rest_Client не является клиентом REST вообще - он не поддерживает методы PUT и DELETE, например. Попробовав клонировать его в работу с фактическим сервисом RESTful, я устал и написал правильный клиент REST для PHP:

http://github.com/educoder/pest

Он по-прежнему не хватает нескольких вещей, но если он будет поднят, я добавлю еще немного работы.

Здесь приведен пример использования службы REST OpenStreetMap:

<?php

/**
 * This PestXML usage example pulls data from the OpenStreetMap API.
 * (see http://wiki.openstreetmap.org/wiki/API_v0.6)
 **/

require_once 'PestXML.php';

$pest = new PestXML('http://api.openstreetmap.org/api/0.6');

// Retrieve map data for the University of Toronto campus
$map = $pest->get('/map?bbox=-79.39997,43.65827,-79.39344,43.66903');

// Print all of the street names in the map
$streets = $map->xpath('//way/tag[@k="name"]');
foreach ($streets as $s) {
  echo $s['v'] . "\n";
}

?>

В настоящее время он использует curl, но я могу переключить его на HTTP_Request или HTTP_Request2 по строке.

Обновление: Похоже, что некоторые люди вскочили на это. Pest теперь поддерживает HTTP-аутентификацию и множество других функций благодаря вкладчикам GitHub.

Ответ 2

Я написал HTTP-клиент PHP под названием Guzzle. Guzzle - это HTTP-клиент и инфраструктура для создания клиентов веб-сервиса REST. Вы можете найти более подробную информацию о Guzzle на веб-сайте или перейти прямо к источнику на github: https://github.com/guzzle/guzzle

Guzzle предоставляет преимущества, которые предоставляют большинство HTTP-клиентов (более простой интерфейс, все методы HTTP и просмотр запроса/ответа), но также предоставляет другие дополнительные функции:

  • потоковые сущности
  • экспоненциальная отсрочка
  • встроенный прокси-сервер для кэширования
  • печенье
  • входа
  • управляемые постоянные соединения
  • параллельные запросы
  • OAuth
  • архитектура плагинов, которая позволяет реализовать произвольные схемы аутентификации
  • Автогенерация клиентского API из файла описания службы JSON

Единственный недостаток: для него требуется PHP 5.3.3

Ответ 4

простой пример в php для остального клиента - обновление приведено ниже:

<?php
$url ="http://example.com";
$data = "The updated text message";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");  //for updating we have to use PUT method.
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
?>

простой пример в php для остального клиента - удаление категории = xx приведено ниже:

<?php
$url ="http://example.com/categoryid=xx";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
?>

Ответ 5

Я долго не мог найти элегантное решение, не любил реализацию cURL, придумал свой собственный. Он поддерживает HTTP-аутентификацию, переадресацию, PUT и т.д., Потому что он полагается на http-модуль pecl.

Реализация прост и проста, легко расширяется.

Более подробную информацию можно найти здесь:

Ответ 7

Возобновление темы, я нашел эту библиотеку https://github.com/Respect/Rest/, очень прост в использовании, но есть несколько примеры в Интернете:

    require_once 'bootstrap.php';
require_once 'Respect/Rest/Router.php';
require_once 'Respect/Rest/Request.php';
use Respect\Rest\Router;

$router->post('/myApp/', function() {

  $data_back = json_decode(file_get_contents('php://input'));
            //  var_dump($data_back);
  return json_encode($data_back);
 });
$router->get('/myApp/*', function($id = null) {

$json = json_encode(MyService::getInstance()->list());

 return utf8_encode($json);
 });
$router->put('/myApp/*', function($id = null) {
  return 'Update: ' . $id;
 });
$router->delete('/myApp/*', function($id = null) {
  return 'Delete: ' . $id;
 });

Ответ 8

Недавнее прибытие Zend\Http\Client, часть Zend Framework 2.

Устанавливается через композитор (хотя на момент написания этой статьи, а не через Packagist, все равно нужно использовать репозиторий пользовательских пакетов Zend http://packages.zendframework.com/).