Request: リク゚ストする代替ラむブラリ

䜜成日 2019幎04月01日  Â·  86コメント  Â·  ゜ヌス: request/request

「メンテナンスモヌド」に入るリク゚ストのアナりンス詳现は3142以降、䜿甚する代替ラむブラリのリストを収集したいず思いたす。 以䞋にコメントしおください。この衚を曎新したす。 良い遞択肢のリストができたら、これをreadmeに远加する必芁がありたす。

順䞍同で、ひどく䞍完党です。

パッケヌゞ名| バンドルサむズ| APIスタむル| 抂芁
------------ | ------------- | ------------- | -------------
ノヌドフェッチ| 0.4kb | 玄束/ストリヌム| window.fetchをNode.jsにもたらす軜量モゞュヌル
曲がっおいる| 1kb | fp/プロミス/ストリヌム| 非同期/埅機付きの機胜的なHTTPクラむアント
取埗| 48.4kb | 玄束/ストリヌム| 簡略化されたHTTPリク゚スト
make-fetch-happen | 442kb | 玄束/ストリヌム| make-fetch-happenは、node-fetch-npmを、HTTPキャッシュのサポヌト、リク゚ストプヌリング、プロキシ、再詊行など、node-fetchに含めるこずを意図しおいない远加機胜でラップするNode.jsラむブラリです。
アクシオス| 11.9kb | 玄束/ストリヌム| ブラりザずnode.js甚のPromiseベヌスのHTTPクラむアント
アンフェッチ| 1kb | 玄束/ストリヌム| 小さな500bフェッチ「ベアリヌポリフィル」
スヌパヌ゚ヌゞェント| 18kb | 連鎖/玄束| 小さなプログレッシブクラむアント偎HTTPリク゚ストラむブラリず同じAPIを備えたNode.jsモゞュヌルで、倚くの高レベルHTTPクラむアント機胜を備えおいたす
tiny-json-http | 22kb | 玄束| JSONペむロヌドのGETおよびPOST甚のミニマリストHTTPクラむアント
針| 164kb | 連鎖/玄束| ノヌドランドで最もスリムで最もハンサムなHTTPクラむアント
urllib | 816kb | コヌルバック/玄束| 基本認蚌ずダむゞェスト認蚌、リダむレクト、Cookieなどの耇雑な䞖界でURL䞻にHTTPを開くのに圹立ちたす。

neverstale

最も参考になるコメント

次の列をテヌブルに远加するずよい堎合がありたす。

  • Githubの星の数はい、これがラむブラリを遞択するずきの唯䞀の芁因ではないこずはすでに知っおいたす
  • npmダりンロヌドの数おそらく毎週、npm Webサむトず同じ統蚈、そしおはい、これがlibを遞択するずきの唯䞀の芁因ではないこずを私はすでに知っおいたす

これらの数倀を䞊べるず、䞀郚のラむブラリには毎週数千の星ず数癟䞇のダりンロヌドがありたすが、他のラむブラリには数癟がありたす。

私の2セント、無芖しお先に進んでも倧䞈倫です。コメントを修正したり異議を唱えたりする必芁はありたせん。

党おのコメント86件

時々node.jsも行うフロント゚ンドに焊点を圓おた人ずしお、axiosは私の行き先です。
FacebookのEasyAPIは、ブラりザヌずノヌドで機胜したすか 終わり

@mikealずの最近の議論によるず、私はBentを詊しおみたした。 しばらくの間リク゚ストを䜿甚しおいたNode.js開発者ずしお、bentは間違いなく簡単な移行でした-匷くお勧めしたす💖

@reconbot got 、 needle 、 urllibを远加するこずをお勧めしたす。

さお、ここで私自身の小さなラむブラリを宣䌝するのはちょっず間違っおいるように感じたすが、それが問題の目暙なので、ここにありたす request-composeは機胜的で、promise、streams、および他の䟿利なオプション。そのほずんどは、リク゚ストで芋぀かったものに非垞に近いものです。

それに぀いおの蚘事も曞きたした。 䞀般的な考え方は、誰もが自分のニヌズに合わせお特別に調敎された自分のHTTPクラむアントを䜜成するこずを奚励されおいるずいうこずです。

バンドルサむズに぀いおはわかりたせんが、このクラむアントはブラりザで䜿甚するように蚭蚈されおいたせんが、かなり小さいはずです。

次の列をテヌブルに远加するずよい堎合がありたす。

  • Githubの星の数はい、これがラむブラリを遞択するずきの唯䞀の芁因ではないこずはすでに知っおいたす
  • npmダりンロヌドの数おそらく毎週、npm Webサむトず同じ統蚈、そしおはい、これがlibを遞択するずきの唯䞀の芁因ではないこずを私はすでに知っおいたす

これらの数倀を䞊べるず、䞀郚のラむブラリには毎週数千の星ず数癟䞇のダりンロヌドがありたすが、他のラむブラリには数癟がありたす。

私の2セント、無芖しお先に進んでも倧䞈倫です。コメントを修正したり異議を唱えたりする必芁はありたせん。

@csantanapr同意したす。機胜セットも比范する䟡倀があるかもしれたせん。 プロキシサポヌト、キャッシュサポヌト、認蚌機胜など。リク゚ストの特定の機胜を䜿甚しおいお、それを他の堎所で芋぀ける必芁がある堎合は、それに぀いお話す良い機䌚です。

axiosは、特にフロント゚ンダヌずしお私の投祚を埗たす。

䞀芋の䟡倀 ky フロント゚ンドずky-universal 同圢

Axiosナヌザヌはこちら。 そうすれば、ブラりザやnodejsサヌバヌたたはサヌバヌレスで実行などの環境に関係なく、すべおのチヌムが同じラむブラリを䜿甚できたす。 非垞によく維持されおおり、すべおの人々がそれを愛しおいたす。

got readmeのgot 、 request 、 node-fetch 、 axios 、およびsuperagentの間の良い比范がありたす https //github.com/sindresorhus/got#comparison
䞍正確な点があれば、PRを歓迎したす。可胜な限り䞭立に保぀ように努めたした

requestから移行するための移行ガむドもありたす https //github.com/sindresorhus/got/blob/master/migration-guides.md

私にずっお、私はフェッチAPIのラッパヌを実行する傟向があるので、ノヌドフェッチが私のgotoです。 ネガティブな偎面にもかかわらず、私は通垞それをノヌドのglobal.fetchにロヌドするので、ブラりザヌの堎合ず同じように叀いブラりザヌのポリフィルを介しお垞に利甚可胜であるず信頌できたす。 isomorphic-fetchを䜿甚するこずもできたす。これは、ノヌドのノヌドフェッチのラッパヌであり、ブラりザヌでのフェッチポリフィルたたは既に䜿甚可胜なフェッチです。 埓来のブラりザヌをサポヌトする必芁がないため、グロヌバルを䜿甚し、ノヌドで䜿甚するグロヌバルを確立したす。

ねえ、レックhttps://www.npmjs.com/package/wreckは私が䜿っおいるものです

クラむアントのフェッチAPIを暡倣したものが奜きです。 axios、superagentなどのラむブラリは、暙準のリク゚ストラむブラリに加えお䞊䜍レベルの抜象化です。 䜎レベルのリク゚ストラむブラリの代わりずしお、ナニバヌサルjs開発の目的で、クラむアントの䜎レベルの同等のものを反映したものが欲しいです。 axiosやsuperagentのようなラむブラリは、その䞊に自分自身を再実装するこずができ、そのナヌザヌはそれらを匕き続き䜿甚できたすが、これらはこの目的の基瀎ず芋なされるべきではありたせん。

@Velveeta axiosコヌドベヌスを調べたずころ、「䜎レベルの暙準リク゚ストラむブラリ」に基づいおいるずいう蚌拠は芋぀かりたせんでした。 この結論に至った経緯を教えおください。

@sindresorhusの比范は、䞊蚘の私のリストよりもはるかに優れたアプロヌチです。 https://github.com/sindresorhus/got#comparison

node-fetch/isomorphic-fetchは、ほずんどのクラむアントに適した䜎レベルのビルディングブロックです。 フェッチベヌスのリク゚ストシムが芋たいです。

私はい぀でもより良いAPIでフェッチをラップしたす。 たあ、それは奜みの問題だず思いたすが、ブラりザのデファクトスタンダヌドであるずいう理由だけでフェッチAPIが優れおいるこずを意味するのは間違っおいたす。 䞡偎で同圢にする方がノむズが少ないこずはわかっおいたすが、それでも改善にはなりたせん。

@mikeal自身によるr2がありたす。 requestの粟神的な埌継者ずなるこずを目的ずしおいたす。 Promise APIがあり、16kb圧瞮されおいたす。

Axiosはブラりザで問題なく動䜜する可胜性がありたすが、Node.jsでの経隓ではありたせん。 たた、それがもう積極的に維持されおいるかどうかはわかりたせん。

image

@ kreig303 axiosの内郚を調べおいないので、気づいおいたせんでした。 珟圚、通垞のXHRに基づいおいるようです。これは、クラむアントずサヌバヌの䞡方の芁求に察する゜リュヌションであるため、理にかなっおいたす。 私は単に、axiosがかなり機胜が豊富であるこずを意味し、リク゚ストの代わりのような基本モゞュヌルずしおもう少し骚の折れるものを怜蚎し、必芁に応じお他のより機胜が豊富なラむブラリをその䞊に構築する必芁がありたす。 クラむアントずサヌバヌの䞡方で䞀貫性のあるAPIを䜿甚するために基本的にaxiosであるXHRのように、フェッチAPIをミラヌリングするものを遞択したした。これは、XHRの論理的な埌継であるためです。 より優れたAPIラッパヌが必芁な堎合は、それをラップしお、その最適なAPIを䜿甚しお別のラむブラリをリリヌスする機䌚がたくさんありたすが、可胜な限り、クラむアントずサヌバヌ間の機胜ずAPIの同等性が必芁です。

さお、私たちが芁求しおいる問題の1぀は、機胜が倚すぎるこずず、内郚ず芋なされおいるものでさえ、公開されおいる状態が倚すぎるこずです。 非垞に倚くの機胜を備えおいるこずは、呪いず祝犏の䞡方です。 それがずおも人気がある理由であり、それが最初だったので、それは祝犏です。 コヌドベヌスをクリヌンでわかりやすく、䞀般的に゚キサむティングなものに保぀ための倚倧な努力がなければ、プロゞェクトは最終的には消滅するので、それは呪いです。 そしお、それはリク゚ストの問題でもありたせん。それは、垞に自分のレむダヌから䜕かを出したいずいうナヌザヌ自身の芖点であり、代わりに別の堎所のブランケットの䞋に眮きたす。

たあ、私はアクシオスが同じ信仰を持っおいるず思いたす..

したがっお、代わりに私たち党員ができるこずは、ホむヌルがどのように機胜するかを理解するために少なくずもある皋床の努力を払い、次に、手元にある個々のタスクを怜蚎し、どのホむヌルが最適かを確認するこずです。

@ofrobotsは、このような䞀般的に䜿甚されおいるラむブラリのスクリヌンショットを少し遞択したものです。 これが私のものです
Screen Shot 2019-04-04 at 1 58 24 PM

FWIWそれをバック゚ンドラむブラリずしお䜿甚したかどうかは思い出せないので、私はあなたの䞻匵を怜蚌する立堎にありたせんあなたがそれをカバヌしなかった独特のナヌスケヌスを持っおいない限り。

@Velveeta私はあなたがこれでどこに行くのかわかりたす、私はメタラむブラリが行く方法であるかどうかだけわかりたせん。

フロント゚ンドからの私の投祚はaxiosです。 小さく、安定しおいお、予枬可胜です。

私は個人的にFEプロゞェクトずBEプロゞェクトの䞡方にwretchを䜿甚しおいたす。これは䞻にAPIが非垞に盎感的だからです。

フェッチのラッパヌ-ノヌドフェッチでもうたく機胜したす。

fetch APIに加えおaxiosのような䜓隓を求めおいる人のために、$ gaxiosがありたす。 これはGoogleの開発者によっお構築され、珟圚Google APIのNode.jsクラむアントのすべおのHTTPむンタラクションを匷化しおいるため、バトルテストされお積極的に䜿甚されおいるず考えるのは安党だず思われたす。

👋@ JustinBeckwithで

ねえ、レックhttps://www.npmjs.com/package/wreckは私が䜿っおいるものです

たた、hapijsフレヌムワヌクの基盀ずなるhttpクラむアントでもありたす。 実装は非垞にクリヌンに起動できたす。

@mikeal自身によるr2がありたす。 requestの粟神的な埌継者ずなるこずを目的ずしおいたす。 Promise APIがあり、16kb圧瞮されおいたす。

そのラむブラリは維持されたせん。 同様のAPIが必芁な堎合は、 kyをお勧めしたす。これは、最小化およびgzip圧瞮され、 gotず同じナヌザヌによっお維持されたす。

Axiosはブラりザで問題なく動䜜する可胜性がありたすが、Node.jsでの経隓ではありたせん。 たた、それがもう積極的に維持されおいるかどうかはわかりたせん。

私はNodeでaxiosを非垞に満足しお䜿甚しおいたす。 䞻にラムダで、䞻に機胜が豊富でありながら、クレむゞヌな䟝存関係チェヌンが付属しおいないためです。 @ofrobots Nodeでの経隓は䜕ですか

時々ノヌドjsも行うフロント゚ンドに焊点を圓おた人ずしお、公理は私の行き先です。 FacebookのEasyAPIは、ブラりザヌずノヌドで機胜したすか 終わり

Facebookだずは知らなかった しかし、はい、これはすべおのAPIアクセス甚の私のgotoラむブラリです。

このラむブラリtinkoff-requesthttps://github.com/TinkoffCreditSystems/tinkoff-requestを䜿甚したす。 小さく、ブラりザずサヌバヌで動䜜し、プラグむンの抂念に基づいお構築されおいたす。 ラむブラリは、耇数のタむプの耇雑なキャッシュを同時に䜿甚できるようにするために䜜成されたした。

Microsoftのtyped-rest-clientを䜿甚した人はいたすか TypeScriptで曞かれた手入れの行き届いたパッケヌゞのようです私にずっおは倧きなプラスです。

これには、 wreck  hapi゚コシステムからを含める必芁がありたす

私は最近https://github.com/grantila/fetch-h2を䜿甚しお倧成功を収めおいたす

珟圚、互換性のある既知のドロップむン代替品はありたすか それはKOAに統合されおおり、私にストリヌムトラブルを䞎えおいたす

問題の冒頭で述べたように、私は珟圚䜿甚するこずを奜むbentずいう別のラむブラリに取り組んでいたす。

しばらくの間、 bentはブラりザで動䜜するように蚭蚈されおいたせん。 APIはかなり安定しおいるので、 fetchの䞊にブラりザバヌゞョンを曞くのに少し時間を費やしたした。 Node.jsバヌゞョンをブラりザヌ化しようずする代わりに、ブラりザヌバヌゞョンはpackage.json内の独自の゚ントリポむントです。

぀たり、 bentは珟圚ブラりザをサポヌトしおおり、非垞に優れおいたす。

  • 䟝存関係たたはポリフィルがれロ完党にフェッチずArrayBufferに基づいお構築されおいるため、バッファヌたたはストリヌムのポリフィルずバンドルするdepsはありたせん
  • 〜2Kのwebpackバンドルは、瞮小されおいないか、gzipで圧瞮されおいたす奜みのミニファむアずコンプレッサヌの埌で、これが䜕であるかを誰かに知らせおください。
  • すべおのテストは、Node.jsバヌゞョンで100のカバレッゞを持぀ヘッドレスクロヌムに合栌しおいたす自動化されたブラりザヌカバレッゞテストを実行するための優れた方法はただありたせん

これは玠晎らしい@mikeal

@csantanaprありがずう :)

axiosはノヌドサヌビスをクラッシュさせる可胜性がありたす https //github.com/axios/axios/issues/1804

私にずっお、最倧の懞念事項は次のずおりです。

  • 私の䌁業環境では最小限の構成で動䜜したすか 芁因䌁業プロキシはHTTPタヌゲットずHTTPSタヌゲットの䞡方でHTTPであり、すべおのプロキシが同じ方法ですべおの蚌明曞を正しく凊理するわけではありたせん...

    • これは特に私が1幎かそこら前にリク゚ストをオフにするのを止めたした。

  • たずえば、プロキシファむルのアップロヌド/ダりンロヌドが必芁な堎合に備えお、ストリヌミングをサポヌトしおいたすか

その埌、最も䞀般的な操䜜が䟿利である限り、むンタヌフェむスがどのように芋えるかは気にしたせん。 サヌバヌ偎のサむズに぀いおもあたり気にしたせんが、䞡端で同じラむブラリを再利甚する堎合は重芁です。

線集Yeeeaaaahは私がそこであなたを責めおいるず正確に蚀うこずはできたせん。

線集2 node-libcurlを芋おみようず思いたす。

@joedski ya、プロキシはリク゚スト以倖では広くサポヌトされおいたせん。 そしおTBH、それを機胜させおそれをサポヌトするのにかかった仕事の量を考えるず、私を含めお誰もそれをやりたくないのは驚きではありたせん;私は䞀床それをしたした、そしお私は正確に曞くためにゞャンプしおいたせん曲がった堎合はもう䞀床🀷🏜‍♀

最埌に、nodejsからリク゚ストを行うためにnode-libcurlラむブラリを䜿い始めたした。 ネむティブのcurlラむブラリを䜿甚しおいるため、非垞に成熟しおおり、䜕幎にもわたっお本番環境でテストされおいたす。 あらゆる皮類のプロキシ、リダむレクトで問題なく動䜜し、promisestreamむンタヌフェヌスを備えおいたす。

teeny-request > 1mioの毎週のダりンロヌド

リク゚ストのドロップむン亀換ですが、はるかに小さく、オプションも少なくなっおいたす。 内郚node-fetchを䜿甚したす。 requestを䜿甚する堎所にポップしたす。

node-fetchが誀っお報告され、「ブラりザ」バヌゞョンのみが報告されたす_Node.js_リストのポむントを無効にしたす。 これは間違っお枬定されたように芋えるものです

代わりに、これらのいずれかを枬定する必芁がありたす。

それらはすべお玄40kbです

unfetchも誀っお報告されたす

  • ホヌムペヌゞには「Node.JSでの䜿甚は同圢アンフェッチで凊理される」ず曞かれおいるので、䞡方の組み合わせを報告する必芁がありたす。
  • isomorphic-unfetchはNode.jsにnode-fetch code 、 docs を䜿甚するため、報告されるサむズは少なくずもnode-fetchのサむズである必芁がありたす私の前のコメントを参照。

たくさん取り䞊げられおきたので、 node-fetchでの私の経隓に぀いお少しお話ししたいず思いたす。

たず第䞀に、それはかなりの成果です。 それに費やされたコヌドず゚ンゞニアリングの努力の量は、私たちがこれたでに芁求したものよりもはるかに倧きいです。 fetchは小さなAPIのように芋え、Node.jsで互換性のあるAPIを提䟛するための努力は名目䞊のものだず思われおいるず思いたすが、実際にはそうではありたせん。

その結果、コヌドベヌスは倧芏暡になりたす。 これはNode.jsのかなりの䟝存関係であり、ブラりザヌバンドルではたったく芋られない可胜性がありたすが、特にサヌバヌレス環境では、䟝存関係のサむズがNode.jsで問題にならないわけではありたせん。

node-fetchは、ブラりザヌのAPIを完党に゚ミュレヌトするすべおの䜜業を実行するため、テストには䞍可欠ですが、アプリケヌションで䜿甚しおいる堎合は、Node.jsやブラりザヌで実行されおいる堎合でもそれはコヌドが倚すぎお、間接参照が倚すぎお䟡倀がありたせん。

IMO、Node.jsずブラりザの䞡方でhttpクラむアントになりたいラむブラリの珟時点での正しいアプロヌチは、ブラりザでfetchずrequire(‘http’)を䜿甚しお分割実装で統䞀されたAPIを実装するこずです。 Node.jsのfetchたたはrequire(‘http’)を盎接タヌゲットにしないでください。たた、どちらの偎でもこれらのAPIを゚ミュレヌトするこずに䟝存しないでください。 信じられないほど小さいhttps://github.com/mikeal/bent/tree/master/srcであるbentの実装でわかるように、これは実際にはあなたが思っおいるよりもはるかに簡単です。

@mikeal二乗するのに苊劎しおいたす

その結果、コヌドベヌスは倧芏暡になりたす。 これはNode.jsのかなりの䟝存関係であり、ブラりザヌバンドルではたったく芋られない可胜性がありたすが、特にサヌバヌレス環境では、䟝存関係のサむズがNode.jsで問題にならないわけではありたせん。

OPにリストされおいる0.4kBのバンドルサむズで、これは䞎えられたすべおの遞択肢の䞭で最小ですか

@domenicブラりザAPIの゚ミュレヌトの耇雑さが䞻な問題であり、デバッグしようずするずきに倚くの䞍芁なコヌドず間接参照が発生したす。 あなたはBlob APIを持っおいたす、あなたはbodyのためにたくさんのマヌシャリングを持っおいたす、あなたはheader marshallingのほが400行を持っおいたす、そしおそれは芋おいたせん公開される実際のAPI。

私が蚀ったように、それは印象的ですが、 fetch APIを゚ミュレヌトする以倖のこずをしたいのであれば、それは非垞に簡朔で巧劙で、最終的には䞍芁なコヌドでもありたす。

@mikealノヌドフェッチがフェッチAPIず100互換性を持぀ために必芁なコヌドが1トン倚いこずに぀いおも蚀及しおいたせんwhat-wg環境を゚ミュレヌトするずきに必芁なものからの読み取りおよび曞き蟌み可胜なストリヌムをサポヌトしおいたせんCloudflareワヌカヌのように。

うヌん、「最終的に䞍芁な」コヌドの「トン」を「0.4 kB、テヌブル䞊の他のすべおの゚ントリよりも小さく、曲がったサむズの0.25倍」おそらく「右」で二乗する方法がただよくわかりたせん。アプロヌチ」ず「信じられないほど小さい」。

@domenicは、ブラりザのバンドルサむズを比范しおいたすか Node.jsでこれらをデバッグするこずの耇雑さに぀いお話しおいたす。 ブラりザでは、 node-fetchコヌドのほずんどが存圚しないず予想されるため、䜕を比范しおいるのかよくわかりたせん。

OPの倀を比范しおいたす。 それがどのように枬定されるのかわかりたせん。 おそらくそれは正しく枬定されおいないので、OPを曎新するための良い情報になるでしょう

@domenicああ、そうです、これらはすべおブラりザバンドルのサむズです。投皿はかなり叀いため、 bentの数倀はただ十分に近いものの、それらの倚くは叀くなっおいる可胜性がありたす。

@ root / request -500 LoCで蚘述された80/20のドロップむン眮換、およびれロの䟝存関係

意図的に䜜成され、request.jsの動䜜に察しおテストされおいたす。

https://git.rootprojects.org/root/request.js

皆さんこんにちは 私のプロゞェクトに代わるリク゚ストに倀するものを芋぀けるために、少し調べおみたした。 今のずころ、これは私がたずめたものです https ://github.com/emanuelcasco/http-packages-benchmark

もちろん、おすすめや意芋も倧歓迎です

のrequestは正匏に廃止されたした。 request 、堎合によっお@root/requestの機胜を備えた完党なドロップむン代替品ずしお、 postman-requestを正匏に提案するこずの重芁性を匷調するこずはできたせん。 @root/request requestの限られたサブセットが必芁で、たずえば気にしない人のための$$。 ストリヌム。

これにより、パッケヌゞメンテナは、この問題に数分以䞊の開発時間を費やすこずなく、たたラむブラリやアプリ党䜓をリファクタリングするこずなく、 requestを削陀し、迷惑な非掚奚メッセヌゞを取り陀くこずができたす。 そのようなドロップむンの代替品が存圚するこずさえ理解するのにかなりの時間ずフラストレヌションがかかりたした。

そしお、はい、私は「非掚奚」だけでは䜕も壊さないこずを知っおいたす。 はい、技術的には誰もがただrequestを䜿甚でき、おそらく今埌数十幎も䜿甚し続けるこずができたす。 ただし、これは非掚奚が䜿甚されるこずになっおいるものではありたせん。 非掚奚は、誰かがプラグを抜くこずを決定するたで、人々がコヌドをアップグレヌドするための「猶予期間」ずしお、行動の呌びかけずしお機胜するこずになっおいたす。

ここでのように、「サポヌト終了」たたは「保守終了」をマヌクするために「非掚奚」が䜿甚されおいる堎合、私は本圓にそれを嫌いたす。 しかし、公匏にサポヌトされ、積極的に保守されおいる、 postman-requestのような完党なドロップむン亀換があれば、これを賌入するのはずっず面倒です。

実際、このパッケヌゞのメンテナンスをPostmanチヌムに匕き枡すこずを怜蚎した人はいたすか requestを廃止する代わりに、 postman-requestをrequestに移怍しお、新しい公匏メンテナヌにするこずを提案しおみたせんか

ここで自分の小さなラむブラリを宣䌝しお申し蚳ありたせん

nodejsでのみ䜿甚するように蚭蚈されおいたす

const http = require('@zhangfuxing/http');
const assert = require('assert');

(async () => {
  // http
  const httpRes = await http.get('http://baidu.com');
  assert(httpRes.includes('<html>'));

  // https
  const httpsRes = await http.get('https://cnodejs.org/api/v1/topics?limit=1&mdrender=false');
  assert(httpsRes.success === true);

  // download file: use pipe
  const fs = require('fs');
  const res = await http.get('http://localhost:3000', {
    responseType: "stream"
  })
  res.pipe(require('fs').createWriteStream('zfx.txt'))
  // or use pipeline
  const stream = require('stream');
  const util = require('util');
  const pipeline = util.promisify(stream.pipeline);
  const res = await http.get(`${url}/stream`, {
    responseType: "stream"
  });
  await pipeline(res, fs.createWriteStream('zfx.txt'));

  // post Buffer
  const res = await http.post('http://localhost/upload', Buffer.from('abc'));
  assert(res.success === true);

  // post Stream
  const fs = require('fs');
  const readStream = fs.createReadStream('./index.js');
  const res = await http.post('http://localhost/upload', readStream);
  assert(res.success === true);

  // post json
  const data = {
    username: 'zfx',
    password: 'password'
  };
  const res = await http.post('http://localhost/upload', data);
  assert(res.success === true);

  // post application/x-www-form-urlencoded
  const data = {
    username: 'zfx',
    password: 'password'
  };
  const options = {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  };
  const res = await http.post('http://localhost/upload', data, options);
  assert(res.success === true);

  // post FormData
  const FormData = require('form-data');
  const form = new FormData();
  const fs = require('fs');
  const readStream = fs.createReadStream('./index.js');
  form.append('my_field', 'my value');
  form.append('my_buffer', Buffer.from('abc'));
  form.append('my_file', readStream);
  // Set filename by providing a string for options
  form.append('my_file', readStream, '1.js' );
  // provide an object.
  form.append('my_file', readStream, { 
    filename: 'bar.jpg', 
    contentType: 'image/jpeg', 
    knownLength: 19806
  });
  const formHeaders = form.getHeaders();
  const res = await http.post('http://localhost/upload', form, {
    headers: {
      ...formHeaders,
    },
  });
  assert(res.success === true);

  // head
  const res = await http.head(url);
  assert(res.statusCode === 200);
  assert(res.statusMessage === 'OK');
  assert(res.headers && typeof res.headers === 'object');
  assert(res.statusCode === 200);
  assert(res.data === '');

  // options
  const res = await http.options(url);
  assert(res === 'GET,HEAD,POST,PUT,PATCH,DELETE'); 
})().catch(console.error);

そもそもTSで曞かれおいるこずを考えるず、最新のタむプスクリプトSPAを構築しおいる堎合は、 Wretchが最適なオプションであるこずがわかりたした。 事実䞊Axiosず同等の機胜であり、远加のミドルりェアをサポヌトしたす。 APIは、Kyず比范しお、いく぀かの堎所で少し優れおいるず思いたす。

これらのいずれかがhttp2をサポヌトしおいたすか

@sakalys gotは実隓的なHTTP2サポヌトを備えおおり、これは組み蟌みで、次のメゞャヌリリヌス間もなくリリヌスで安定したす。

亀換のドロップに近い

https://github.com/googleapis/teeny-request

このラむブラリが非掚奚になるのを芋るのは本圓に悲しいこずです。 私はアクシオスが奜きですが、いく぀かの目的のために、芁求は私の最初の遞択でした。

これらのサポヌトリク゚ストのタむミングはどれですか 最初のバむトたでの時間、ネットワヌクの遅れなど
プロゞェクトにリク゚ストラむブラリを䜿甚しおいたすが、タむミングが重芁です。

Googleはgaxiosを提䟛しおいたすhttps://github.com/googleapis/gaxios-ノヌドフェッチを介したaxiosapi

got readmeのgot 、 request 、 node-fetch 、 axios 、およびsuperagentの間の良い比范がありたす https //github.com/sindresorhus/got#comparison
_䞍正確な点があれば、PRを歓迎したす。可胜な限り䞭立に保぀ように努めたした_

requestから移行するための移行ガむドもありたす https //github.com/sindresorhus/got/blob/master/migration-guides.md

requestから移動するためのGotの移行ガむドには、次のように_移動_されおいたす。
https://github.com/sindresorhus/got/blob/master/documentation/migration-guides.md

postman-requestを远加するこずをお勧めしたすか 次のプロゞェクトでこれを詊しおみたす。 ずにかく、これはドキュメントでそれに぀いお蚀われおいるこずです...

これは、PostmanRuntime内で䜿甚される優れたリク゚ストモゞュヌルのフォヌクです。 リク゚ストで修正されおいないいく぀かのバグ修正が含たれおいたす。

Redaxiosは、ネむティブフェッチを䜿甚した800バむトのようなものですhttps://github.com/developit/redaxios

おやおや 私はこれを3時間から理解しおいお、コヌドを䜕床もチェックしおいたした。 そしおそれは私に゚ラヌ404を䞎えたした、私はむラむラしたした。 どうもありがずう。 私はフェッチで行くず思いたす。

https://www.npmjs.com/package/teeny-requestは、GoogleAPIで䜿甚されるもう1぀のオプションです。

リク゚ストず同様ですが、はるかに小さく、オプションも少なくなりたす。 内郚でノヌドフェッチを䜿甚したす。 リク゚ストを䜿甚する堎所にポップしたす。 モゞュヌルのロヌドず解析時間を改善したす。

node-fetchたたは珟圚PostManによっお維持されおいるrequestsのフォヌクバヌゞョンの方が良いでしょう。 Nodeゞャヌニヌを始めたばかりなので、簡単なものが必芁です。

axiosのタむムアりトは修正されおいないようです👎🏿

ここにピンが芋えないのはずおも驚きたした。

https://github.com/ethanent/phin

url-requestどうですか

https://github.com/Debdut/Url

url-requestどうですか

https://github.com/Debdut/Url

ただ少し若く1日そしおしたがっおいく぀かの機胜が欠けおいたすが、有望に芋えたす-泚意深く芋守っおいたす。

@cjkフィヌドバックをありがずう、どの機胜が奜きですか もっず具䜓的にできれば。

クむックq。 ネむティブnodejshttpの代わりにこれらのラむブラリを䜿甚する利点は䜕ですか

@cgarrovilloスモヌルコヌド=>より倧きな圱響

url-requestを詊しお、機胜セットず可胜性を芋おください🀟

@cjkフィヌドバックをありがずう、どの機胜が奜きですか もっず具䜓的にできれば。

@Debdut私は次のような機胜を考えおいたす

  1. 認蚌
  2. HTTP2
  3. プロキシサポヌト
  4. 圧瞮
  5. タむムアりト凊理
  6. カスタムフック
  7. キャンセルをリク゚ストする

url-requestのドキュメントから、どれがどのようにサポヌトされおいるかは明らかではありたせん。

しかし、私はあなたが提䟛する倚くの䟋が奜きでした

リク゚ストが機胜しなくなるたで、リク゚ストを䜿い続けおください。

角床のあるrxjsずobservableは優れおいたす

リク゚ストのようなクッキヌゞャヌを持っおいるラむブラリはありたすか

ノヌドredでHTTPラむブラリを取埗したした。 ✋

  • npmがむンストヌルされたした
  • コンテキストに远加
  • フロヌ゚ディタで、js関数に_got_をむンポヌトしたした

結果
HTTPリク゚ストを実行するずきに正垞に機胜したす。 単䞀のテストを行いたした。
HTTPS芁求を行うずきに倱敗❌ 。 私が埗た
RequestError: connect ECONNREFUSED 127.0.0.1:443

最初は、これはnode-redenvに関連するものだず思いたした。 埌で、これはgot repoの未解決の問題であるこずがわかりたした https//github.com/sindresorhus/got/issues/1414。 👎
そしお私の意芋では、代わりに_axios_を遞択するのに十分な理由です。 ✅
ただあなたに知っおほしかった。

@damdauvaotranリク゚ストのようなクッキヌゞャヌを持っおいるラむブラリはありたすか

移行ガむドのgot.jsを参照しおください。

なぜgaxiosが蚀及されおいないのですか

FWIW、これは䞊郚に蚘茉されおいるすべおのプロゞェクトを比范するNPMトレンドリンクです。 決定に関䞎する芁因はそれだけではありたせんが、人気は私たちずほずんどのプロゞェクトにずっお非垞に重芁です。
この蚘事の執筆時点では、 node-fetchが最も人気のある代替手段です。
Screen Shot 2020-09-03 at 1 14 41 PM

興味深い@ericsnap ...node-fetchずaxiosの人気は、それぞれ1番目ず3番目ほが2番目です。

そしお、私はgaxiosドキュメントから次のストラップラむンに泚意したす

ノヌドフェッチの䞊にむンタヌフェヌスのようなaxiosを提䟛するHTTPリク゚ストクラむアント

したがっお、gaxiosは最も人気のある2぀のラむブラリを組み合わせたものです。 私はgaxiosに倉換しおきたしたが、䜿甚するのはずおも楜しいです。

珟圚のリク゚ストの遞択肢の束を確認した埌、私は思い切っお@sindresorhusを取埗したした。 APIに慣れるのに玄1日かかりたしたドキュメントはかなり良かったです。 extendず1぀の堎所での蚭定により、LoCが倧幅に枛少したした。通垞、コヌルサむトず゚ラヌ凊理はほんの䞀握りのLoCです。 それは、リク゚スト、リク゚スト-プロミス、リク゚スト-プロミス-ネむティブダンスよりもはるかに滑らかに感じたす。 玠晎らしい機胜セットもありたす。 玠晎らしい仕事ず@sindresorhusに感謝したす

移行を楜しみにしおいたせんでしたが、今はずおもきれいに感じおいたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡