type-is, 推断请求的内容类型

分享于 

4分钟阅读

GitHub

  繁體 雙語
Infer the content-type of a request.
  • 源代码名称:type-is
  • 源代码网址:http://www.github.com/jshttp/type-is
  • type-is源代码文档
  • type-is源代码下载
  • Git URL:
    git://www.github.com/jshttp/type-is.git
    Git Clone代码到本地:
    git clone http://www.github.com/jshttp/type-is
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/jshttp/type-is
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    用户定义的类型为

    NPM VersionNPM DownloadsNode.js VersionBuild StatusTest Coverage

    推断请求的Content-Type。

    安装

    这是一个通过注册中心注册中心提供的node.js 模块。 安装是使用 npm install 命令完成的:

    $ npm install type-is

    API

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

    类型= 格式 TypeIs ( 请求,类型)

    request 是 node HTTP请求。 types 是类型的array。

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

    typeis.hasBody(request )

    如果给定的request 具有主体,则返回布尔值,而不考虑 Content-Type 头。

    身体与身体( 它可能是 0字节)的大小没有关系。 这与文件存在的方式类似。 如果实体确实存在,则表示从 node.js 请求流中读取的数据。

    if (typeis.hasBody(req)) {
     // read the body, since there is onereq.on('data', function (chunk) {
     //.. . })
    }

    类型= typeis.is(mediaType, types )

    mediaType媒体类型字符串。 types 是类型的array。

    var mediaType ='application/json'typeis.is(mediaType, ['json']) // 'json'typeis.is(mediaType, ['html', 'json']) // 'json'typeis.is(mediaType, ['application/*']) // 'application/json'typeis.is(mediaType, ['application/json']) // 'application/json'typeis.is(mediaType, ['html']) // false

    每个类型可以是:

    • 扩展名,如 json。 如果匹配,将返回这里名称。
    • mime类型,如 application/json
    • 带有通配符( 如 */* 或者 */json 或者 application/* )的mime类型。 如果匹配,将返回完整的mime类型。
    • 后缀,如 +json。 这可以与一个通配符组合,如 */vnd+json 或者 application/*+json。 如果匹配,将返回完整的mime类型。

    如果没有类型匹配或者内容类型无效,将返回 false

    如果请求没有主体,则将返回 null

    示例

    示例体分析器

    var express =require('express')var typeis =require('type-is')var app =express()app.use(functionbodyParser (req, res, next) {
     if (!typeis.hasBody(req)) {
     returnnext()
     }
     switch (typeis(req, ['urlencoded', 'json', 'multipart'])) {
     case'urlencoded':
     // parse urlencoded bodythrownewError('implement urlencoded body parsing')
     case'json':
     // parse json bodythrownewError('implement json body parsing')
     case'multipart':
     // parse multipart bodythrownewError('implement multipart body parsing')
     default:
     // 415 error coderes.statusCode=415res.end()
     break }
    })

    许可证


    相关文章