easyhttp v1.1發布,新增異步並發請求

2021-01-10 開源中國

EasyHttp 是一個輕量級、語義化、對IDE友好的HTTP客戶端,支持常見的HTTP請求、異步請求和並發請求,讓你可以快速地使用 HTTP 請求與其他 Web 應用進行通信。

EasyHttp並不強制依賴於cURL,如果沒有安裝cURL,EasyHttp會自動選擇使用PHP流處理,或者你也可以提供自己的發送HTTP請求的處理方式。

1、新增異步並發請求

use Gouguoyin\EasyHttp\Response;use Gouguoyin\EasyHttp\RequestException;$promises = [ Http::getAsync('http://easyhttp.gouguoyin.cn/api/sleep3.json'), Http::getAsync('http1://easyhttp.gouguoyin.cn/api/sleep1.json', ['name' => 'gouguoyin']), Http::postAsync('http://easyhttp.gouguoyin.cn/api/sleep2.json', ['name' => 'gouguoyin']),];Http::concurrency(10)->multiAsync($promises, function (Response $response, $index) { echo "發起第 $index 個異步請求,請求時長:" . $response->json()->second . '秒' . PHP_EOL;}, function (RequestException $e, $index) { echo "發起第 $index 個請求失敗,失敗原因:" . $e->getMessage() . PHP_EOL;});//輸出發起第 1 個請求失敗,失敗原因:cURL error 1: Protocol "http1" not supported or disabled in libcurl (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)發起第 2 個異步請求,請求時長:2 秒發起第 0 個異步請求,請求時長:3 秒

2、異步請求時如果沒有請求參數可以省略

use Gouguoyin\EasyHttp\Response;use Gouguoyin\EasyHttp\RequestException;Http::getAsync('http://easyhttp.gouguoyin.cn/api/sleep3.json', ['token' => TOKEN], function (Response $response) { echo '異步請求成功,響應內容:' . $response->body() . PHP_EOL;}, function (RequestException $e) { echo '異步請求異常,錯誤碼:' . $e->getCode() . ',錯誤信息:' . $e->getMessage() . PHP_EOL;});echo json_encode(['code' => 200, 'msg' => '請求成功'], JSON_UNESCAPED_UNICODE) . PHP_EOL;//輸出{"code":200,"msg":"請求成功"}異步請求成功,響應內容:{"code":200,"msg":"success","second":3}Http::getAsync('http1://easyhttp.gouguoyin.cn/api/sleep3.json', function (Response $response) { echo '異步請求成功,響應內容:' . $response->body() . PHP_EOL;}, function (RequestException $e) { echo '異步請求異常,錯誤信息:' . $e->getMessage() . PHP_EOL;});echo json_encode(['code' => 200, 'msg' => '請求成功'], JSON_UNESCAPED_UNICODE) . PHP_EOL;//輸出{"code":200,"msg":"請求成功"}異步請求異常,錯誤信息:cURL error 1: Protocol "http1" not supported or disabled in libcurl (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)

3、新增withUA()方法

$response = Http::withUA('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.36')->post(...);

4、新增asMultipart()方法,attach()的別名

$response = Http::asMultipart( 'file_input_name', file_get_contents('photo1.jpg'), 'photo2.jpg')->post('http://test.com/attachments');$response = Http::asMultipart( 'file_input_name', fopen('photo1.jpg', 'r'), 'photo2.jpg')->post(...);

5、get()、getAsync()方法支持帶參數的url

$response = Http::get('http://httpbin.org/get');$response = Http::get('http://httpbin.org/get?name=gouguoyin');$response = Http::get('http://httpbin.org/get?name=gouguoyin', ['age' => 18]);

 

相關焦點

  • Linux使用epoll異步發送http請求
    http是基於tcp的協議,在發送http請求之前,要先與伺服器建立tcp連接,然後才可以發送HTTP請求。HTTP請求的頭部,就是一些以\r\n分割的字符串。第一行為GET、POST方法,之後的每一行為冒號分割的鍵值對,表示http請求的一些信息。
  • smart-http 1.0.19 發布,輕量級的國產 HTTP 伺服器
    ,smart-http 並不支持 Servlet 規範,但對於 Http 伺服器所需的各項能力,它都具備。smart-http 天生就是異步非阻塞的 I/O 模型,因為其通信內核採用了 smart-socket。所以無論是性能還是穩定性,都是非常出色的。更新內容 新增對Cookie的支持,實現了 request cookie 解析和 response cookie 編碼,該功能已應用於smart-servlet。
  • Django 3.1異步視圖實例學習
    新發布得到Django 3.1中,提供了對步視圖的支持。在附帶的官方教程提供了一個有關Django異步視圖示例演示在調用時的異步執行asyncio.sleep。但是對此很多人會疑惑,這個sleep能幹什麼呢?本文我們就一起來學習一下 Django中的異步視圖就能幹啥。
  • 並發編程--用SingleFlight合併重複請求
    在實際應用中也是,它能夠在一個服務中減少對下遊的並發重複請求。還有一個比較常見的使用場景是用來防止緩存擊穿。Go提供的SingleFlightGo擴展庫裡用singleflight.Group結構體類型提供了SingleFlight並發原語的功能。
  • Go中的HTTP請求之——HTTP1.1請求流程分析
    大綱前言http是目前應用最為廣泛, 也是程式設計師接觸最多的協議之一。今天筆者站在GoPher的角度對http1.1的請求流程進行全面的分析。希望讀者讀完此文後, 能夠有以下幾個收穫:對http1.1的請求流程有一個大概的了解在平時的開發中能夠更好地復用底層TCP連接對http1.1的線頭阻塞能有一個更清楚的認識HTTP1.1流程今天內容較多, 廢話不多說, 直接上乾貨。
  • 字節跳動面試官:請用JS實現Ajax並發請求控制
    今天這道是字節跳動的:實現一個批量請求函數 multiRequest(urls, maxNum),要求如下:• 要求最大並發數 maxNum• 每當有一個請求返回,就留下一個空位,可以增加新的請求• 所有請求完成後,結果按照 urls 裡面的順序依次打出
  • PHP的異步並行網絡擴展Swoole已發布1.7.5版本
    PHP的異步並行網絡擴展Swoole今天發布了最新的1.7.5版本。
  • Linux使用epoll控制多個socket發送http請求
    在客戶端使用epoll控制多個socket發送數據,與在伺服器上是類似的,也是把一個連續的同步過程拆成多個非阻塞的階段,在一個線程內實現高並發,而不是開多個線程。客戶端使用多個socket異步高並發,一般是對伺服器做壓力測試的代碼。
  • HttpComponents HttpAsyncClient 4.1 GA 發布
    HttpComponents HttpAsyncClient 4.1 GA 發布,此版本主要有以下更新:Support for pipelined request execution
  • 異步請求和異步調用有區別?直到看到了7年前的一個問答
    今天就帶大家一起探究一下「異步請求和異步調用」這兩個概念。異步請求和異步調用的區別上面提到的文章中有這樣兩段話來講異步請求和異步調用的區別:區別一:異步請求用來解決並發請求對伺服器造成的壓力,從而提高對請求的吞吐量;而異步調用是用來做一些非主線流程且不需要實時計算和響應的任務,比如同步日誌到kafka中做日誌分析等。
  • php異步高並發擴展swoole-1.6.10版發布 - OSCHINA - 中文開源技術...
    簡介: swoole是一個php版本的異步、高並發擴展,是國人被php官方pecl包收錄的力作之一。
  • HP-Socket v4.1.2,高性能 TCP & HTTP 通信框架
    《HP-Socket v4.1 開發指南》通用性易用性易用性對所有通用框架都是至關重要的,如果太難用還不如自己重頭寫一個來得方便。因此,HP-Socket 的接口設計得非常簡單和統一。Server 組件:基於 IOCP 通信模型,並結合緩存池、私有堆(Private Heap)等技術,支持超大規模連接,在高並發場景下實現高效內存管理。
  • OpenAPI Generator v4.1.1 發布,OpenAPI 規範自動生成代碼
    4.1.1 版本已經發布,更新內容如下:General [core]設置 isMultiPart=true 用於多部分操作,修復 NPE 在服務中使用 anyof/oneof 時,修復導入和屬性名稱 自動更新生成腳本:userdef cache dir 修復了從 allVars 中丟失的組合屬性
  • TeaWeb v0.1.5 發布,支持 HTTPS 證書申請、HTTP 隧道功能
    完整的變更列表:* 代理     * 提供一個在線工具幫助申請免費的HTTPS證書     * 實現一個基礎的HTTP隧道功能(其實是HTTP over TCP),可以通過代理功能,將你本機的Web服務發布到公網
  • 面試題:HTTP1.0,HTTP1.1,HTTPS和HTTP2.0的區別
    前言超文本傳輸協議(HTTP,HyperText Transfer Protocol)是網際網路上應用最為廣泛的一種網絡協議,所有的WWW 文件都必須遵守這個標準,設計 HTTP 最初的目的是為了提供一種發布和接收
  • 百度發布 Paddle Fluid v1.3 版本,帶來多項重要更新
    正式發布 AnalysisConfig 預測接口,支持計算圖分析、算子融合等優化,並支持利用 Intel MKLDNN、Nvidia TensorRT 子圖引擎等第三方庫的加速.模型庫新增發布 PaddlePaddle 視頻模型庫,提供 5 個視頻分類經典模型以及適合視頻分類任務的通用骨架代碼,用戶可一鍵式高效配置模型完成訓練和評測。
  • Atmosphere 2.4.1 發布,異步 WebSocket 框架
    Atmosphere(大氣)框架中包含用於構建異步Web應用程式客戶端和伺服器端的組件。
  • Python 3.8異步並發編程
    有效的提高程序執行效率的兩種方法是異步和並發,Golang,node.js之所以可以有很高執行效率主要是他們的協程和異步並發機制。實際上異步和並發是每一種現代語言都在追求的特性,當然Python也不例外,今天我們就講講Python 3中的異步並發編程。
  • aio-enhance v1.0.1 發布,Java AIO 內核增強類庫
    aio-enhance 採用了 NIO 技術實現了一套全新的異步 IO 模型,兼容完整的 Java AIO 接口。用戶可自由選擇 Java 原生提供的,或者 aio-enhance 增強的 AIO 實現,架構如下圖。
  • Spring Boot+Vue|axios異步請求數據的12種操作(上篇)
    Spring Boot + Vue 前後端分離最核心的操作就是通過異步請求完成數據同步,這其中又可以分為很多種不同的情況,比如是 GET 請求還是 POST