Web標準のHTTPクライアントfetch()でストリーミングしながらアップロードできるようになる。
kebiyama @kebiyama 湯沸器や給湯器の観察を趣味にしています。テレビ等で見た給湯器などの型式を特定したりもします。毎週サザエさんに湯沸し器が登場するかどうかをチェックしており、未登場の週は18年は3週、19年は4週、20年は4週、21年は1週、22年は4週、23年は2週でした。24年は2/18、3/31、5/19が未登場です。 kebiyama @kebiyama 夫の目の前で他人にカラダを求めるHカップ超美人妻と濃厚不倫。連続種付けSEXで満たす欲にまみれた大人な関係 辻井ほのかにてナショナル製ビルトインコンロを確認。ナショナルなんてもちろん今はないですし、ガス器具業界から撤退しているためこの機種が残っているのはレアです。 pic.twitter.com/EfZ6fq6t35
Intro Fetch API の実装が広まり、 IE もリタイアを迎えたことで、今後忘れ去られていくことになるだろう XMLHttpRequest について。 どのように始まり、どのように広まり、どのように使われなくなっていくのか。その間に残した多大な功績を残す。 XMLHttpRequest の始まり この名前は非常に長いため、通常 XHR と略される。 この API は、現在の Web API のように W3C/WHATWG による標準化を経て策定された API ではない。 Microsoft によるいわゆる独自実装の API として始まり、後追いで標準化される。 したがって、 Web API の中でもかなり異質な命名である XHR が、 XmlHttpRequest でも XMLHTTPRequest でもなく XMLHttpRequest である理由も、 Microsoft の命
最近の流れを見ていての感想文なので、ideaとして投稿します。筆者のバックグラウンドとしては、Remixの商業記事を書いたり、App Routerの商業記事を書いたりしている人です。 さて、筆者は2022年の秋から、社内システムではありますがRemixをプロダクション運用しています。また、Next.jsのApp Routerについても、パラダイムとしてはRemixにインスパイアされた部分が多い[1]おかげで、順調にキャッチアップできています。 RemixとApp Routerは、ルーティングとデータフェッチを高度に統合しており、Progressively Enhanced SPA(PESPA)と呼ばれることもあるそうです。PESPAについては、次の記事が話題になりましたね。 このPESPAであるRemixを実運用する中で、フレームワークの手触りが近年触ってきたものと大きく違っている点があっ
2022年4月、Deno に以下のバグが報告されました。 fetch API を使って 300KB ぐらいあるファイルをアップロードすると、一定確率でアップロードされたファイルが壊れるというバグの報告です。 報告者によれば、1.20.6 まではバグは発生しておらず、1.21.0 から発生するようになったという事です。1.20.6 の次のリリースが 1.21.0 なので、パッチバージョン1個分まで、バグの発生時期が特定されている状態です。 fetch 周りは自分はほぼ実装していないので「担当範囲ではない」感覚だったので、普通にスルーしていました。 自分に限らず、Deno Land コアチームの誰もこの issue にピンと来る人が居なかったようで、stale ボット (数ヶ月進捗の無い issue を自動的にクローズしようとするボット) に2回もクローズされかけていました。Deno の st
サッポロ一番 塩らーめんが好きです。偏愛と云うよりも信仰に近いくらいかも知れない。他のインスタントラーメンには申し訳ないけれど、サッポロ一番 塩らーめん一択です。人生でこれまでにどれだけサッポロ一番 塩らーめんを食べて来ただろうか。僕の身体の何分の一かはサッポロ一番 塩らーめんで出来ているのではないか。そう思うくらいに食べて来た。 サンヨー食品のサッポロ一番 塩らーめんの発売は1971年(昭和46年)年9月1日とある。その直後の9月18日に日清食品からカップヌードルが発売になっている。7月にはマクドナルドの日本1号店が銀座にオープン。現在まで繋がっている色々な物事がスタートした年だ。 1971年は僕個人にとってトピックの多い年だ。映画では「ゴジラ対ヘドラ」「ガメラ対深海怪獣ジグラ」、テレビでは「帰ってきたウルトラマン」「仮面ライダー」「宇宙猿人ゴリ」「シルバー仮面」「ミラーマン」「天才バカ
const url = "https://fetch-api-normalization.deno.dev"; await fetch(url, { method: "PATCH" }); await fetch(url, { method: "patch" }); 実行すると、次のようなエラーを得るはずです。 PATCH を小文字で書いた際のエラーの一例 さて、どのような条件でこのエラーが発生するのでしょうか?これが意図されたものなのだとしたら、 GET や POST は大文字・小文字を無視してよくて PATCH は無視できない理由がなにかあるのでしょうか?以下でその理由を探ってみましょう。 いつエラーが発生するか このエラーは、 Fetch API を利用して外部の HTTP サーバーに対してリクエストを行う時に、 PATCH と書くべきところを patch と書いていると発生します。
Next.js のドキュメントには次のように記載されてる React will automatically cache fetch requests with the same input in a temporary cache. This is an optimization to avoid the same data being fetched more than once during a rendering pass - and is especially useful when multiple components need to fetch the same data. React が自動的に fetch request をキャッシュすると書いてある。
ショートアンサー React 18 からのフックである、useSyncExternalStore を使えばいいようです。 ※ useEffect がまったくだめだというわけではありません。 ※ クライアントサイドレンダリングのみを考えています。サーバーサイドレンダリングを考慮すると違った答えになるかもしれません。 サンプルコード 次のような useData フックを作ってみます。 JSON API の GET レスポンスを返すシンプルなものです。 実験をしやすいように、リクエスト URL を変えるボタンを置いてあります。 import { useEffect, useState } from "react" export function SearchResults() { const [id, setID] = useState(1) const todo = useData(`http
最近めっきりDenoに触ってない。一言で言うと飽きてしまった。 とはいえどうなってるかくらいの情報は追っているのだが、どうも使いたいと言う気分にならない。 今自分はDenoコントリビューターではないのでいち開発者としての外から見たDenoの現状を語ってみる 最近のDenoはWeb標準に追従している 具体的には、fetch APIの実装に始まり、ブラウザに実装されているAPIの実装を頑張っている windowオブジェクトもあるし、webcryptoやWebGPUのような、ブラウザでも誰も使ったことのないようなAPIまで実装している 自分はどうもこの流れに乗れなかった この方針は現在のDenoコアチームの強い姿勢であり、最近JavaScriptの標準化団体であるTC39に参加したという だがDenoがサーバーサイドの言語である以上、ブラウザに存在する様々なブラウザ的問題を解決するための仕組みや
前置き この記事は リクルートエンジニアアドベントカレンダーの3日目の記事です。 Recruit Engineers Advent Calendar 2022 - Adventar ちなみにココで書いたやつを一部抜粋させていただいております(ネタ切れにより過去投稿を利用してしまっております。。。すいません。。。) www.codegrid.net fetch が Node v18 から試験的にサポートされた ブラウザでは数年前から採用されていた HTTP リクエストを行う関数の fetch が global 空間に関数として作成されました。使うだけなら特に何のフラグもいりません、その代わり使うと Experimental であることを知らせる Warnings が出ます。 // fetch.mjs const response = await fetch('https://api.gith
We’re excited to announce that Node.js 18 was released today! Highlights include the update of the V8 JavaScript engine to 10.1, global fetch enabled by default, and a core test runner module. Initially, Node.js 18 will replace Node.js 17 as our ‘Current’ release line. As per the release schedule, Node.js 18 will be the 'Current' release for the next 6 months and then promoted to Long-term Support
みなさん、フロントエンド開発時のモックサーバーは何を使っていますか?モックサーバーといっても様々なアプローチがあると思いますが、最近活用している MSW が便利だったので紹介します。MSW(Mock Service Worker)はブラウザリクエストを Service Worker がインターセプトし、任意のレスポンスを返すことが出来るライブラリです。 次の様な Express 風ハンドラーで、モックレスポンスを表現することができます。なんとこのコードがブラウザで動いてしまいます。 import { setupWorker, rest } from "msw"; const worker = setupWorker( rest.get("https://myapi.dev/csr", (req, res, ctx) => { return res( ctx.json({ title: "C
APIの開発してますか?挙動の確認を見る時どうしてますか? curlを手書きしている?パラメータがないリクエストなら手軽で良いですね。 Postmanのようなツールを使っている?素晴らしい! ブラウザで実際に画面を表示している?うーん…それって繰り返したいとき大変なんじゃ…… とはいえ、ブラウザで実際に画面を表示すると、パラメータの組み立てが非常に楽というメリットがあります。 認証情報付きリクエストとか組み立てるの大変ですもんね。 ここで、ブラウザのリクエストをそのまま繰り返したり、ちょっとだけパラメータを組み替えられたら便利だと思いませんか? 今回はそんな方法を紹介します。 cURLでコピーしてリトライする Chromeの開発者ツール(Windows F12、Mac Cmd + Opt + I)を開いてネットワークタブを開いてください。 この状態で目的のページを開いてください。 Pres
Fetch Upload Streaming が Chrome 85 から Origin Trial で使えるようになりました。 何ができるかというと ReadableStream を fetch() の body に渡すことができるようになります。 getUserMedia でカメラから取得した映像をブラウザからストリーミング送信したいときに使えそうと考えたので、今回試してみました。 blog.chromium.org TL;DR fetch() で Stream のデータを送れるようになった WebSocket を使わずに映像などのデータをストリーミング送信できる 以下のコードがこの記事の内容 https://github.com/shisama/sample-streaming-video-with-fetch/blob/master/public/script.js Readabl
Added Added stack trace to AxiosError #4624 Add AxiosError to AxiosStatic #4654 Replaced Rollup as our build runner #4596 Added generic TS types for the exposed toFormData helper #4668 Added listen callback function #4096 Added instructions for installing using PNPM #4207 Added generic AxiosAbortSignal TS interface to avoid importing AbortController polyfill #4229 Added axios-url-template in ECOSY
Fetch Upload Streaming とは Fetch Upload Streaming とは、ブラウザの JavaScript の POST リクエストで HTTP のストリーミングを行える機能です。より具体的には、Fetch API の body に ReadableStream や WritableStream のような Streams API を渡せるようになります。 const stream = new ReadableStream({}) fetch(`/send?room=${roomId}`, { method: "POST", body: stream, duplex: "half", }); かねてより Fetch API ではレスポンスを ReadableStream で取得できたのですが、反対にリクエスト時に body に ReadableStream を渡
はじめに 今回はSWRとTanStack Queryの比較によってそれぞれの特徴と違いを整理したいと思います。背景としてネット上にある両者の比較記事は2022年以前のものが多く、当時に比べSWR2.0がリリースされたことなどで比較の観点が変化したように感じました。改めて整理することで技術選定の参考になればと思います。 前提 今回は以下のバージョンを前提にします。(2023/08/26時点でLatest) SWR v2.2.0 TanStack Query v4.34.0 また、私自身はTanStack Queryを業務で1年ほど扱ったことがありSWRは全く経験がない状態です。この記事はどちらが優れているかを示すためのものではなく、あくまで客観的に比較することを目的にしています。 目次 ここでは以下の3つの観点から比較を行い考察をします。 interfaceでの比較 機能面での比較 キャッシ
Intro 最近 AbortSignal.any() が提案され、急速に実装が進んでいる。 すでに定義されている AbortSignal.timeout() や addEventListener() への Signal なども含め、非同期処理の中断を実装する際の API はかなり整備されてきた。 これら API のモチベーションと設計を中心にまとめる。 Abort 後のリソース解放 AbortSignal によって、非同期処理のキャンセルが可能になった。例として、 Server 上での Fetch のタイムアウトの例を考えよう。 app.get("/entries", async (req, res) => { const perRequestController = new AbortController() const perRequestSignal = perRequestCont
ドラマ『今日から俺は!!』『アシガール』で注目を集め、今年は映画『のぼる小寺さん』『とんかつDJアゲ太郎』『弱虫ペダル』など、出演作の公開が控えている伊藤健太郎さん。そんな彼の公式プロフィールに趣味として書かれているのが、「革製品に油を塗りこむこと」。今回は伊藤さんがレザーにハマったきっかけやその魅力、そして“革を育てていく”楽しさについてお話を伺いました。とめどなくあふれる熱すぎる思い、お楽しみください! 撮影:田中達晃 取材・文:東海林その子 メイク:島徹郎(juice) スタイリング:釘宮一彰 記事制作:オリコンNewS 買ったばかりの製品にあえて“傷”をつける楽しさ ――レザーにハマったきっかけを教えてください。 僕の家の隣に住んでいたお兄ちゃんみたいな人が、革ジャンをよく着ていたんですよ。それに憧れて、自分も革のものを集めるようになりました。 革ってずっと使えるじゃないですか。僕
Intro Podcast を PWA 対応するために、待望だった機能の 1 つが Background Fetch だ。 これにより、通常 Range Request で取得するような、大きなファイルを事前にダウンロードしておくことができるようになる。 この API と、 Service Worker およびブラウザにおける Range Request/Partial Response の扱いについて記す。 background fetch Podcast は大きな音声ファイルがメインコンテンツとなる。 PWA のキャッシュ戦略典型例としては install 時に全てキャッシュする request 発生時にキャッシュする といった方法がある。 しかし、この方法は一般的な Podcast としては少し使いにくい。 install 時に全てのファイルをキャッシするのは現実的ではない requ
Honestly, I'd never thought I'd be writing about this, but the matter of patching globals turned out to be one of those topics that a lot of engineers seem to misunderstand. Most of us don't do monkey-patching, and even fewer stay around those implementations long enough to witness their impact. All the more reason to talk about it. Throughout the next few thousand words, I will be referring to mo
Right now, when you go to copilot.github.com you're greeted with this example: async function isPositive(text) { const response = await fetch(`http://text-processing.com/api/sentiment/`, { method: 'POST', body: `text=${text}`, headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, }); const json = await response.json(); return json.label === 'pos'; } This is bad and might result in sec
Photo by Brixiv from PexelsIn my previous article, “Deep Insights Into JavaScript’s Fetch API”, I discussed the basics of the Fetch API. But it’s worth acknowledging that fetch() isn’t consistently an ideal solution, and there are sometimes better alternatives for making HTTP requests. Here I’ll describe why Axios is better than fetch() in development. This is my 36th Medium article. Overview and
fetchとaxiosはどちらも外部リソースを取得するためのライブラリーで非同期で動くためPromise型を返します。 似ているライブラリーですが、主に4つの違いがあるのでそれぞれを解説してきます。 インストール方法 HTTPメソッド通信 JSONデータの取得方法 エラーハンドリング 1.インストール方法 fetchはブラウザの標準ライブラリーでインストールせずに使うことができます。 一方、axiosはインストールが必要です。以下のコマンドで取り込むことができます。 yarn add axios npm install axios そして、モジュールのインポートも必要です。 import axios from "axios" 2.HTTPメソッド通信 HTTPメソッド通信毎の呼び出し方がfetchとaxiosで異なります。 fetchによるPOST通信 fetchでPOST通信を行う際は第
2023-10-17, Version 21.0.0 (Current), @RafaelGSS and @targos We're excited to announce the release of Node.js 21! Highlights include updates of the V8 JavaScript engine to 11.8, stable fetch and WebStreams, a new experimental flag to change the interpretation of ambiguous code from CommonJS to ES modules (--experimental-default-type), many updates to our test runner, and more! Node.js 21 will repl
Node.js v17.5 introduces support for fetch() – a popular cross-platform HTTP client API that works in browsers and Web/Service Workers – as an experimental core feature. fetch() support has been a long-requested addition by many, who want to write cross-platform HTTP request code and are familiar with the fetch() API shape and call patterns. So much so that the node-fetch module exists solely to b
こんにちは!DA(データアナリティクス)事業本部 サービスソリューション部の大高です。 Next.jsと同じチームによって作成されている、データ取得のための React Hooks ライブラリとして「SWR」というライブラリがあります。 今回はこのライブラリの一番基本の部分をNext.jsのプロジェクトで試してみたいと思います。 SWRとは 公式サイトにも以下のように記載されていますが「SWR」という名前はHTTPキャッシュ無効化戦略であるstale-while-revalidateに由来しています。 “SWR” という名前は、 HTTP RFC 5861 で提唱された HTTP キャッシュ無効化戦略である stale-while-revalidate に由来しています。 SWR は、まずキャッシュからデータを返し(stale)、次にフェッチリクエストを送り(revalidate)、最後に
2024/5/10 追記 ありがたいことにこの記事は2024現在もたまにアクセスやいいねがあるのですが、 リクエスト先でリダイレクトが発生するときに追加で注意してほしいことがあるので以下に別記事を書きました。 また、そのうち await 使った版のこの記事も書こうと思います。 TL;DR このへん書いてあることをかいつまんだだけです URL送りつけるだけだとなぜか伝わらないことがあったので書きました Fetch の使用 | Web API | MDN https://developer.mozilla.org/ja/docs/Web/API/Fetch_API/Using_Fetch Response | Web API | MDN https://developer.mozilla.org/ja/docs/Web/API/Response Fetch API が 4xx エラーを rej
JavaScript は、必要に応じていつでもサーバへリクエストを送信し、新しい情報を読み込むことができます。 例えば、次のようなことができます: 注文を送信する ユーザ情報を読み込む サーバから最新の更新情報を受け取る …など …そしてこれらはすべてページをリロードすることなく行うことができます。 それを表す包括的な用語 “AJAX” (Asynchronous Javascript And Xml)があります。XML を使う必要はありません: この用語は昔から来ています。 ネットワークリクエストを送信し、サーバから情報を取得するための様々な方法があります。 fetch() メソッドはモダンで多目的に利用できるため、これから始めましょう。fetch は数年間進化と改善を続けています。今のところサポートはブラウザの間でとてもしっかりしています。 基本構文は次の通りです: url – アクセ
function makeHttpPostRequestWithAppsScript() { const url = "https://postman-echo.com/post?source=web&foo=bar"; const response = UrlFetchApp.fetch(url, { "method": "POST", "headers": { "x-api-key": "123xyz", "cache-control": "no-cache", "Content-Type": "application/x-www-form-urlencoded" }, "muteHttpExceptions": true, "followRedirects": true, "validateHttpsCertificates": true, "contentType": "appli
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く