express-preconditions
DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/express-preconditions package

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)

Package Sidebar

Install

npm i express-preconditions

Weekly Downloads

236

Version

1.0.5

License

MIT

Unpacked Size

28.8 kB

Total Files

18

Last publish

Collaborators

  • makaretu