範囲を修正する方法


TLドクター
Reactadmin(したがって、あなたのRAデータがバージョン3.10.4に単純な残り)を更新した後に、あなたはなぜあなたのAPIリクエストがステータスコード416のために失敗するかについて疑問に思っていますx-total-count 古い代わりにヘッダcontent-range 新しいヘッダが使用されているフロントエンドデータプロバイダーで指定します.
simpleRestProvider('http://path.to.my.api/', fetchUtils.fetchJson, 'X-Total-Count')

最近、私たちは約6ヶ月間接触しなかったプロジェクトの依存関係を更新しました.もちろん走るnpm outdated 私たちはたくさん見つけた.
しかし、更新は、非常に困難ではなく、1つの非常に奇妙なエラーは、我々だけで実行時に遭遇した.
すべての単一のリクエストは、我々のアプリケーションによって作らReact Admin, a very powerful and handy frontend framework , 416の範囲で満足できないエラーが発生しました.
同じ要求はPostman経由で実行されたときには完全に良かった.
私たちはすぐに、いくつかのHTTPヘッダーで何かをする必要がありました.
我々は要求されたヘッダを送っていたas described in the docs そして、我々は適切に我々のバックエンドから彼らを公開していました.
基本的に、フロントエンドは範囲/ページ指定を指定するクエリparamを送信します.users?range=[25,49] 25の要素のチャンクで2番目のページの結果を要求していることを意味します.バックエンドは、そのページ化情報を持つcontent rangeヘッダを含むレスポンスを返さなければなりません.
  {
headers: 
    {
    'Access-Control-Expose-Headers': 'Content-Range',
      'Content-Range': 'users 25-49/315'
    }
  }
によるとOfficial React Admin documentation and Upgrade and the Changelog GitHubでは、バックエンドでのリクエストや変更を行う必要がない変更点がありません.
私たちはたくさんデバッグして、たくさんのものを試してみましたthe commits history of the React-Admin Simple-Rest-Data-Provider そして、私たちは、何かが本当に要請によって出されるヘッダーに関して変わったと気がつきました.

それでも、変化がなぜ要求が突然失敗したかについて、本当に説明しませんでした.
それでも、それは明らかに問題の原因でした.強制的に除去することによって、HTTPClientによって送られる直前にrange ヘッダーは、データプロバイダによって追加された後、問題が消え、私たちのコンテンツ範囲のヘッダーが正しく表示され、Reactadminによって使用されます.
もちろん、それは私たちの修正されていなかった可能性がありますので、私は読んでI found out that the original Content-Range Reactadminによって使用されるページ化のためのアプローチは、どうにか、ハッシュ的でした、そして、それはX - Total- Countヘッダーを使用するのが最もよいです.
我々のバックエンドでは、我々は完全にヘッダーcontentrangeを取り除いて、使われましたx-total-count 代わりに、私たちのフロントエンドでは、単にDataProvider/HttpClientインスタンスのパラメーターに使用するカウントヘッダーの型を追加し、問題がなくなりました.
// in the backend
response.headers['X-Total-Count'] = results.total 
response.statusCode= 200,
response.body= JSON.stringify(results.data)


// in the frontend
simpleRestProvider('http://path.to.my.api/', fetchUtils.fetchJson, 'X-Total-Count')
私は、これを修正して満足しています、それでも、それは私にとって、古い内容範囲ヘッダーで間違っていたことが本当にはっきりしていません[email protected] .
私はstack overflow question , この問題はかなりの間私たちをブロックし、誰かのために便利になるかもしれません、そして、私たちが我々の使用の間違った何かをしていたならば、Reactadminの管理者が若干の光を捨てることができることを願っています、あるいは、我々が本当に前に経験しなかったバグにぶつかって、多分ドキュメンテーションを改善するならば.このエピソードの他に、Reactadminドキュメンテーションは通常非常に明確で広範囲です、そして、このフレームワークは本当に役に立ちます!
希望が助け