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.

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