codememory/screw 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

codememory/screw

Composer 安装命令:

composer require codememory/screw

包简介

Component for sending Http RequestAuthor

README 文档

README

HTTP Screw - это интерфейс пакета Guzzle, который упрощает создание запросов используя ООП

License Code Size Packagist

Установка

composer require codememory/http-screw

Документация

Request Методы

  • baseUrl(): HttpRequest Добавить URL в клиент. И тогда в setUrl() можно просто передать ссылку

    • string $url (default: null)

  • setUrl(): HttpRequest Добавить URL на который будет сделан запрос

    • string $url (default: null)

  • addPort(): HttpRequest Добавить ПОРТ к URL

    • integer $port (default: null)

  • setMethod(): HttpRequest Метод запроса [ GET|POST|PUT|DELETE|UPDATE ]

    • string $method (default: GET)

  • clientOptions(): HttpRequest Следующее указаные опции добавить в клиент. Которые будут по умолчанию

    • boolean $status (default: false)

  • option(): HttpRequest Добавить опцию к запросу

    • string $option (default: null)

    • callable $callback (default: None): $option

      • object $option (default: $option)

  • processResponseCode(): HttpRequest Обработать HTTP-код

    • callable $callback (default: None)

      • Response $response (default: $response)

    • integer $code (default: 200)

  • refuser(): HttpRequest Обработать ошибку запроса. Это может быть ошибка connect и прочее

    • callable $callback (default: None)

      • RequestException $e (default: $e)

  • addBody(): HttpRequest Отправить Body

    • string $body (default: None)

  • addJson(): HttpRequest Загрузка данных в кодировке JSON в качестве тела запроса. Заголовок Content-Type application/json будет добавлен, если в сообщении уже нет заголовка Content-Type.

    • mixed $data (default: None)

  • saveBody(): HttpRequest Добавить Путь, где будет сохранен body ответ

  • send(): HttpRequest Метод отправляет запрос на указанный URL

  • response(): GuzzleResponse Возрощает Response пакета Guzzle

Опции и их компоненты

Redirect

> HttpRequest::O_REDIRECT
  • redirect() Разришение Перенаправлений

    • boolean $performRedirects (default: false)

  • numberRedirects() Кол-во Перенаправлений

    • integer $redirects (default: 5)

  • strictRedirect() Строгие Перенаправления

    • boolean $strictly (default: false)

  • addRefererOnRedirect() Разрешить добавление заголовка referer при обноружении перенаправления

    • boolean $allowDispatch (default: true)

  • redirectHandler() Обработчик при обнаружении перенаправления

    • object|callable $allowDispatch (default: null)

  • allowProtocols() Добавить разрешенные протоколы

    • string ...$args (default: [http, https])

Authorization

> HttpRequest::O_AUTH
  • username() Имя пользователя

    • string|integer $username (default: null)

  • password() Пароль пользователя

    • string|integer $password (default: null)

  • type() Тип аутификации [basic, digest, ntlm]

    • string $type (default: null)

  • disable() Отключить аутификацию

    • None (default: true(On))

  • enable() Включить аутификацию

    • None (default: true(On))

Timeout(сек)

> HttpRequest::O_TIMEOUT
  • connectionTime() Время подключения к серверу

    • integer|float $time (default: 0)

  • requestTime() Время запроса

    • integer|float $time (default: 0)

  • readTime() Время использования при чтении потокового тела

    • integer|float $time (default: default_socket_timeout of php.ini)

SSL Cert

> HttpRequest::O_SSL
  • certificate() Путь к файлу, содержащему сертификат в формате PEM

    • string $pathCertificate (default: None)

    • string|null $password (default: null)

  • key() Путь к файлу, содержащему закрытый ключ SSL в формате PEM

    • string $pathCertificate (default: None)

    • string|null $password (default: null)

  • verify() Включить проверку SSL или Установить путь к собственому сертификату на диске

    • boolean|string $pathOrStatus (default: true)

Proxy

> HttpRequest::O_PROXY
  • setProxy() Добавить прокси с определенным протоколом

    • string $proxy (default: null) - URL-адрес прокси

    • string|null $protocol (default: None) - Протокол прокси

  • username() Имя пользователя

    • string $username (default: None) - Пример с именем пользователя [http://username:password@127.0.0.1:80]

  • password() Пароль пользователя

    • string $password (default: None)

  • setUser() Объединение методов username() и password()

    • string $username (default: None)

    • string $password (default: None)

    • boolean $forAllAddresses (default: false) - Добавить ко всем следующим URL-адресам имя пользователя и пароль

  • preventProxy() Добавить имена хостов, которые не следует проксировать

    • string ...$args (default: None)

Params

HttpRequest::O_PARAMS

  • form() Передать POST данные, если метод запроса POST

    • array $data (default: None)

  • query() Передать GET данные, если метод запроса GET

    • array $data (default: None)

  • withFiles(): ParamsOption Отправить файлы. Не работает вместе с методом form()

    • string $inputName (default: None)

    • mixed NOT null $contents (default: None) - Данные для использования в элементе формы.

    • ?string $filename (default: Null)

    • ?array $headers (default: [])

Headers

HttpRequest::O_HEADERS

  • decodeContent(): HeadersOption Укажите, будут ли Content-Encoding ответы (gzip, deflate и т. Д.) Автоматически декодироваться.
    • string|boolean $decode (default: true)

  • header() Добавить заголовок
    • string $name (default: None)

    • mixed $value (default: None)

  • onHeaders() Вызываемый объект, который вызывается, когда HTTP-заголовки ответа получены, но тело еще не начало загружаться.
    • callable $callback (default: None)

      • Response $response (default: Response)

  • expect() Управляет поведением заголовка «Expect: 100-Continue».
    • integer|boolean $rule (default: 1048576)

Http

HttpRequest::O_HTTP

  • setVersion() Установить версию протокола
    • integer|float $version (default: 1.1)

  • stream() Установить потоковою передачу ответа, а не для загрузки сразу
    • boolean $status (default: false)

  • idnConversion() Поддержка интернационализированных доменных имен (IDN) (включена по умолчанию, если intl расширение доступно).
    • integer|boolean $support (default: true or false)

  • httpExceptions() Выдача исключений по HTTP-code
    • boolean $status (default: true)

  • ipVersion() Установить версию IP
    • string $version (default: None)

  • stats() Позволяет получить доступ к статистике передачи запроса и доступ к деталям передачи нижнего уровня обработчика, связанного с вашим клиентом.
    • callable $callback (default: None)

      • TransferStats $stats (default: TransferStats)

  • sync() Сообщить обработчикам HTTP, что вы собираетесь ожидать ответ. Это может быть полезно для оптимизации
    • boolean $status (default: None)

Progress

HttpRequest::O_PROGRESS

  • progress() Определяет функцию, вызываемую при выполнении передачи.
    • callable $callback (default: None)

      • integer $downloadTotal (default: 0) - общее количество байтов, ожидаемых к загрузке, ноль, если неизвестно

      • integer $downloadedBytes (default: 0) - количество байтов, загруженных на данный момент

      • integer $uploadTotal (default: 0) - общее количество байтов, которые должны быть загружены

      • integer $uploadedBytes (default: 0) - количество байтов, загруженных на данный момент

Response Методы

  • responseType() Преоброзовать ответ Body в ТИП:

    • integer $type (default: String(4))
      Response::RESPONSE_JSON
      Response::RESPONSE_ARRAY
      Response::RESPONSE_OBJECT
      Response::RESPONSE_STRING

  • getBody() Получить Body ответа

  • getHttpCode() Получить HTTP-код

  • getResponseGuzzle(): GuzzleResponse Вернуть обьект класса GuzzleResponse

  • __call() Другие методы из обьекта GuzzleResponse Подробнее

Отправка запроса

 use Codememory\Screw\HttpRequest;

 $httpRequest = new HttpRequest();
 
 $response = $httpRequest
        ->setUrl('http://example.com/') // Url запроса
        ->setMethod('GET') // Метод запроса
        ->send();

Запрос с опциями

 $httpRequest
    ->setUrl('http://example.com/')
    ->setMethod('GET')
    ->option(HttpRequest::O_REDIRECT, function(RedirectOption $redirect):  RedirectOption {
        $redirect
            ->redirect(true);
        
        return $redirect;
    })
    ->send();

Пример использования несколько опций и их компоненты:

 $httpRequest
    ->setUrl('http://example.com/')
    ->setMethod('GET')
    ->option(HttpRequest::O_REDIRECT, function(RedirectOption $redirect): RedirectOption {
        $redirect
            ->redirect(true)
            ->allowProtocols('http'); 
            
        return $redirect;
    })
    ->option(HttpRequest::TIMEOUT, function(TimeoutOption $timeout): TimeoutOption {
        $timeout
            ->delay(4)
            ->requestTime(5);
         
        return $timeout;
    })
    ->send();  

codememory/screw 适用场景与选型建议

codememory/screw 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 63 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 03 月 09 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「framework」 「curl」 「http」 「rest」 「http client」 「client」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 codememory/screw 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 codememory/screw 我们能提供哪些服务?
定制开发 / 二次开发

基于 codememory/screw 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 63
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-03-09