Вышел официальный HTTP клиент для Yii 2

    Команда Yii выпустила официальное расширение-клиент HTTP. Написано почти целиком Павлом Климовым. До последнего времени не было тегнуто как релиз из за несовместимости с PSR-7, хотя уже много где использовалось. После долгих обсуждений было решено выпускать без PSR-7. К нему, возможно, вернутся в 2.1.x.


    Выполнение HTTP запроса выглядит вот так:


    use yii\httpclient\Client;
    
    $client = new Client();
    $response = $client->createRequest()
        ->setMethod('post')
        ->setUrl('http://example.com/api/1.0/users')
        ->setData(['name' => 'John Doe', 'email' => 'johndoe@domain.com'])
        ->send();
    if ($response->isOk) {
        $newUserId = $response->data['id'];
    }

    https://github.com/yiisoft/yii2-httpclient

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 37

      –1
      Шикардос! :)
        –3
        Наконец можно избавиться от guzzl`а
          +6
          конечно, избавиться. Почти каждый сторонний пакет тянет за собой guzzle
            +13
            А чем guzzle не угодил?
            –5
            А он работает поверх CURL? (если да то я вам сочувствую)
              +2
              И чем же плох cURL?
                –6
                он прожорлив
                  0
                  Альтернативы?
                    0
                    в сравнении с чем? есть что-то лучшее?
                    только не говорите про fsockopen…
                  0

                  Из коробки два транспорта: CURL и stream. Можно написать свои при желании.

                  +6
                  Зачем придумывать велосипед если уже есть? Но судя по коду, вижу, что удобненько. А судя по комментариям согласшусь на счет GUZZLE.
                    0
                    Чем так плох Guzzle?
                      0

                      Он не плох, но тяжёл как в плане зависимостей, так и в плане API.

                        +3
                        А ваш требует yii2, поэтому просто так его не подключить. Кстати, не вижу, чтобы у Guzzle было много зависимостей:
                        — guzzlehttp/guzzle
                        — — guzzlehttp/promises
                        — — guzzlehttp/psr7
                        — — — psr/http-message
                          –3

                          Так его и будут использовать с Yii 2.0. Он по другому и не может работать...

                            0
                            А зачем делать завязку на фреймворк там, где без нее спокойно можно обойтись?

                            Вообще аргументы странные. Объем (хотя не вижу ничего объемного) — ну, не знаю, мне что-то прямо вспоминается, как заливал HTML на 14400 по фтп на хостинг с 2 Мб места. API кажется тяжелым — можно сделать фасад/адаптер.

                            Мне кажется, дело в другом — у Guzzle найден фатальный недостаток :-)
                              0

                              Посмотрите исходник. Нельзя там просто так обойтись не продублировав yii\web\Cookie и yii\web\HeaderCollection, которые в фреймворке уже есть.


                              Я ни разу не говорил про размер на диске.


                              API кажется тяжелым — можно сделать фасад/адаптер.

                              Так это он и есть. Хотите — реализуйте драйвер, который будет использовать Guzzle.

                                0

                                выделите yii\web\Cookie и yii\web\HeaderCollection в отдельные модули и избавитесь от дублирования кода. Мне вот нравится AR Yii, но просто так её не получится использовать, т.к. нужно тащить весь фреймворк.

                                  0

                                  Вы имеете ввиду пакеты? Да, есть такие планы, но не в 2.0. Возможно, в 2.2 — 2.3.

                    –4
                    Ведь использовать file_get_contents было бы слишком просто.
                      –5
                      Особенно если нужно оправить данные методом POST
                      –1

                      Как с file_get_contents() например настроить таймаут на ожидание ответа?

                      +1

                      Для него и обёртка...

                      0

                      На данный момент использую уже несколько лет php-curl-class, и вроде вполне доволен.

                        0
                        Не думаю что замена Guzzle. Я бы не заменил.
                          0

                          Не замена. Просто есть моменты, для которых нужно что-то попроще...

                          +1
                          Отличная новость, спасибо автору! По коду и примерам просто и удобно.

                          Расширить доки и добавить на русском было бы неплохо.
                            0
                            Я тоже сомневаюсь что стоит разработывать велосипеды когда есть уже готовые и главное — хорошые решения. Ведь все используют Guzzle…
                              0

                              Мы тоже сомневались, но 13000 установок убедили нас...

                                0
                                14 112 589
                                https://packagist.org/packages/guzzlehttp/guzzle

                                Вы серьезно?
                                  +1

                                  А при чём тут цифры Guzzle всех версий с 2011 года? Несомненно, библиотека очень популярная, но она не единственная. Люди пользуются buzz, zend-http, httpful и так далее. Мы сделали довольно тонкую обёртку с двумя простыми драйверами. Драйвер под Guzzle тоже можно сделать. Цифры для не релизнутого расширения вполне нормальные. Например, вот Sphinx: https://packagist.org/packages/yiisoft/yii2-sphinx

                              0
                              нету поддержки multi curl или я не увидел
                              лично я использую khr/php-mcurl-client для мульти отправки
                              для обычной рутины самопал codepaste.net/g92i1n
                              метод send, если честно взбесил, можно сделать отправку на конечных методах (get put post delete)
                                +1
                                нету поддержки multi curl или я не увидел

                                Есть. Будет работать асинхронно если использовать CurlTransport.

                                  0
                                  спасибо, пока модерировали комментарий полазил по коду и доке нашел отправку, прошу не учитывать мое мнение выше в комментарии оно не актуально.

                              Only users with full accounts can post comments. Log in, please.