これについては他にも多くの質問がありますが、Node.jsはサーバー側の言語であるため、「Etagサポート」は、nodejsアプリがクライアントに返すコードを作成、送信、および処理することを指しているようです。私の場合、リソースを要求して送信せず、200 応答すべてをモバイル ユーザーが使用できるように firebase db に保存し、Etag 値をIf-None-Match
ヘッダーに一致させて返送するときに (304 ではなく) 別の 200 応答を取得したときに更新します。リソースに変更があるかどうかを確認するための追加のリクエスト。
また、この場合の適切な用語は何ですか。私がクライアントで、私のモバイル アプリ ユーザーが私のクライアントなので、彼らはクライアントのクライアントですか?
私はreqestを使用していて、ローカルetag
変数を設定するよりも簡単な方法があるかどうか疑問に思っていました。設定されていない場合は設定されているかどうかを確認してから、空のヘッダーのセットと空のヘッダーのセットを'If-None-Match'
使用し、応答でそれを取得するときに使用しますそのままつかむ
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
var info = body;
var etag = headers.etag;
returnEtag(etag)
次に、それを取得してreturnEtag()
関数で返し、2 番目のヘッダー セットで使用する必要があります。
言うまでもなく、これは面倒です。アプリ全体でこれを実行して、etag
さまざまなリクエストごとに簡単/簡単な方法で管理する必要があります。これをすぐに処理できるモジュールはありますか?
ドキュメントには、次のことを行う必要があると記載されています
すべての応答は、HTTP Cache-Control ヘッダーを返します。その内容は、キャッシュされた応答を使用して不要な API 要求を減らすことができる期間を示します。この API にアクセスするクライアントは、この情報を考慮する必要があります。
それに加えて、各応答は HTTP ETag ヘッダーを返します。そのコンテンツは、HTTP If-None-Match ヘッダー内の同じリソースへの後続のリクエストで使用されます。キャッシュされた情報がまだ有効な場合、API はステータス コード 304 Not Modified を返します。この API にアクセスするクライアントは、条件付き GET とも呼ばれるこの手法を使用する必要があります。
私は自分のサーバーを使用してこのAPIにアクセスし、そのデータをfirebaseに保存して、モバイルアプリでユーザーにアクセスできるようにしています(この他社のAPIでアプリのキーをモバイルアプリユーザーから遠ざけます)。