express-preconditions

    1.0.5 • Public • Published

    Conditional Requests

    Travis build status Coverage Status npm version

    Middleware for HTTP Conditional Requests (RFC 7232). It conditionally processes a HTTP request based on a precondition (such as an etag or modification date). A precondition is specified using the If-Match, If-None-Match, If-Modified-Since or If-Unmodified-Since HTTP header.

    The change log is automatically produced with the help of semantic-release.

    Getting started

    Install with npm

    > npm install express-preconditions --save
    

    Usage

    Include the following in your server startup

        const preconditions = require('express-preconditions')
        app.use(preconditions())

    or

        const preconditions = require('express-preconditions')
        const options = { ... }
        app.use(preconditions(options))

    See our test server for more details.

    Options

    Name Description
    error A function that takes (status code, message, req, res) and sends an error response.
    requiredWith An array of HTTP methods that must include one of the precondition headers. This prevents the lost update issue. Defaults to ['PUT', 'PATCH', 'DELETE'].
    stateAsync A function that takes (req) and returns a Promise to the get the assoiciated resource state.

    Resource state

    The resource state contains the etag and lastModified properties, which conform to the respective HTTP headers and can be undefined.

    The default stateAsync() obtains the resource state by sending a HEAD request to the server.

    Status codes

    The following HTTP status codes can be returned by the middleware

    Code Reason
    304 (Not Modified) The resource has not been modified since the version specified by the precondition(s).
    412 (Precondition Failed) A precondition failed.
    428 (Precondition Required) A precondition header is required to avoid the lost update issue.
    501 (Not implemented) A precondition is not yet implemented.

    TODO

    • The If-Range header is not currently supported.

    License

    The MIT license.

    Copyright © 2016 Richard Schneider (makaretu@gmail.com)

    Install

    npm i express-preconditions

    DownloadsWeekly Downloads

    263

    Version

    1.0.5

    License

    MIT

    Unpacked Size

    28.8 kB

    Total Files

    18

    Last publish

    Collaborators

    • makaretu