type-is

Infer the content-type of a request.

type-is

Infer the content-type of a request.

$ npm install type-is
var http = require('http')
var is   = require('type-is')
 
http.createServer(function (reqres) {
  var istext = is(req, ['text/*'])
  res.end('you ' + (istext ? 'sent' : 'did not send') + ' me text')
})

request is the node HTTP request. types is an array of types.

// req.headers.content-type = 'application/json' 
 
is(req, ['json'])             // 'json' 
is(req, ['html', 'json'])     // 'json' 
is(req, ['application/*'])    // 'application/json' 
is(req, ['application/json']) // 'application/json' 
 
is(req, ['html']) // false 

mediaType is the media type string. types is an array of types.

var mediaType = 'application/json'
 
is.is(mediaType, ['json'])             // 'json' 
is.is(mediaType, ['html', 'json'])     // 'json' 
is.is(mediaType, ['application/*'])    // 'application/json' 
is.is(mediaType, ['application/json']) // 'application/json' 
 
is.is(mediaType, ['html']) // false 
  • An extension name such as json. This name will be returned if matched.
  • A mime type such as application/json.
  • A mime type with a wildcard such as */* or */json or application/*. The full mime type will be returned if matched.
  • A suffix such as +json. This can be combined with a wildcard such as */vnd+json or application/*+json. The full mime type will be returned if matched.

false will be returned if no type matches or the content type is invalid.

null will be returned if the request does not have a body.

var is = require('type-is');
 
function bodyParser(reqresnext) {
  if (!is.hasBody(req)) {
    return next()
  }
 
  switch (is(req, ['urlencoded', 'json', 'multipart'])) {
    case 'urlencoded':
      // parse urlencoded body 
      throw new Error('implement urlencoded body parsing')
      break
    case 'json':
      // parse json body 
      throw new Error('implement json body parsing')
      break
    case 'multipart':
      // parse multipart body 
      throw new Error('implement multipart body parsing')
      break
    default:
      // 415 error code 
      res.statusCode = 415
      res.end()
      return
  }
}

MIT