Function ifMatch

  • A helper function that takes the value from the If-Match header and a calculated etag for the target. By using strong comparison, return true if the values match, otherwise false.

    See MDN's If-Match article for more information on how to use this function.

    Parameters

    • value: null | string

      the If-Match header value.

    • etag: undefined | string

      the ETag to check against.

    Returns boolean

    whether or not the parameters match.

    import {
    eTag,
    ifMatch,
    } from "@std/http/etag";
    import { assert } from "@std/assert";

    const body = "hello deno!";

    Deno.serve(async (req) => {
    const ifMatchValue = req.headers.get("if-match");
    const etag = await eTag(body);
    assert(etag);
    if (!ifMatchValue || ifMatch(ifMatchValue, etag)) {
    return new Response(body, { status: 200, headers: { etag } });
    } else {
    return new Response(null, { status: 412, statusText: "Precondition Failed"});
    }
    });