type-is
Infer the content-type of a request.
Install
$ npm install type-is
API
var http = require('http')
var is = require('type-is')
http.createServer(function (req, res) {
var istext = is(req, ['text/*'])
res.end('you ' + (istext ? 'sent' : 'did not send') + ' me text')
})
type = is(request, types)
request
is the node HTTP request. types
is an array of types.
is(req, ['json'])
is(req, ['html', 'json'])
is(req, ['application/*'])
is(req, ['application/json'])
is(req, ['html'])
type = is.is(mediaType, types)
mediaType
is the media type string. types
is an array of types.
var mediaType = 'application/json'
is.is(mediaType, ['json'])
is.is(mediaType, ['html', 'json'])
is.is(mediaType, ['application/*'])
is.is(mediaType, ['application/json'])
is.is(mediaType, ['html'])
Each type can be:
- 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
*/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.
Examples
Example body parser
var is = require('type-is');
function bodyParser(req, res, next) {
if (!is.hasBody(req)) {
return next()
}
switch (is(req, ['urlencoded', 'json', 'multipart'])) {
case 'urlencoded':
throw new Error('implement urlencoded body parsing')
break
case 'json':
throw new Error('implement json body parsing')
break
case 'multipart':
throw new Error('implement multipart body parsing')
break
default:
res.statusCode = 415
res.end()
return
}
}
License
MIT