zoukankan      html  css  js  c++  java
  • 003-RFC关于媒体类型说明

    一、概述

    RFC-822   Standard for ARPA Internet text messages [ARPA互连网文本信息标准]
    RFC-2045 MIME Part 1: Format of Internet Message Bodies [MIME 第1部分:互联网信息主体的格式]
    RFC-2046 MIME Part 2: Media Types [MIME 第2部分:多媒体类型]
    RFC-2047 MIME Part 3: Header Extensions for Non-ASCII Text [MIME 第3部分:非ASCII文本的页眉扩展名]
    RFC-2048 MIME Part 4: Registration Procedures [MIME 第4部分:注册程序]
    RFC-2049 MIME Part 5: Conformance Criteria and Examples [MIME 第5部分:一致性标准和案例]


    RFC-2616 Hypertext Transfer Protocol -- HTTP/1.1

    RFC-4627 The application/json Media Type for JavaScript Object Notation (JSON)

    RFC-3023 XML Media Type

    RFC-6838 媒体类型规范和注册程序

    一、application/vnd[.github][.version].[params]+json

    1.1、命名要求

    RFC地址:https://tools.ietf.org/html/rfc6838#section-4.2

      所有注册媒体类型必须分配顶级类型和子类型名称。这些名称的组合具有独特性识别媒体类型和子类型名称facet标识注册树。
      类型和子类型名称必须符合以下ABNF:
         type-name = restricted-name
         subtype-name = restricted-name
    
         restricted-name = restricted-name-first *126restricted-name-chars
         restricted-name-first  = ALPHA / DIGIT
         restricted-name-chars  = ALPHA / DIGIT / "!" / "#" /
                                  "$" / "&" / "-" / "^" / "_"
         restricted-name-chars =/ "." ; Characters before first dot always
                                      ; specify a facet name
         restricted-name-chars =/ "+" ; Characters after last plus always
                                      ; specify a structured syntax suffix

    1.2、application/vnd[.github][.version].[params]+json分析

    1、application含义

    rfc地址:https://tools.ietf.org/html/rfc6838#section-4.2.5

      application是一个顶级类型被应用与离散数据不同于其他类型, 

    2、vnd含义

    rfc地址:https://tools.ietf.org/html/rfc6838#section-3.2

      供应商子类型,一般用于vnd.github,同级别的还有prs.个人的,其中[.github][.version].[params]是用户自定义的Vendor Tree

    3、+json含义

    1>结构化语法名称后缀

    RFC地址:https://tools.ietf.org/html/rfc6838#section-4.2.8

      该文档还标准化了一个约定(使用后缀'+ xml')用于命名媒体类型......当这些媒体类型时表示XML MIME(多用途Internet邮件扩展)实体。
      也就是说,它指定了要附加的后缀(在这种情况下,“+ xml”)    到基本子类型名称。

    2>理解“+xml”

      基于XML的媒体类型的'+ xml'命名约定

    rfc地址:https://tools.ietf.org/html/rfc7303#section-9.6

      本规范建议使用'+ xml'命名约定    用于识别基于XML的媒体类型,符合识别    在[RFC6838]中的结构化语法名称后缀。这允许使用    通用XML处理器和技术的各种各样的    使用现有的最低成本的不同XML文档类型    媒体类型注册的框架。

    3>通过Application/xslt+xml来理解Application/xslt+json

    RFC地址:https://tools.ietf.org/html/rfc3023#section-8.16

    Content-type: application/xslt+xml

      可扩展样式表语言(XSLT)文档是XML文档    其内容描述了其他XML文档的样式表,如    由[XSLT]定义。

      作为基于XML的格式,XSLT文档应该是    在MIME内容类型中使用'+ xml'后缀约定标识符。

    4》+ json结构化语法后缀

    RFC地址:https://tools.ietf.org/html/rfc6839#section-3.1

      [RFC4627]定义“application/json”媒体类型。后缀 “+ json”可以与任何表示如下的媒体类型一起使用 为“application / json”建立的。

    注意事项:

      为其指定的片段标识符的语法和语义+ json应该按照“application / json”的规定。

      特定的片段标识符的语法和语义“xxx / yyy + json”应该按如下方式处理:

        对于+ json中定义的情况,片段标识符解析根据+ json规则,然后按照+ json中的指定进行处理。

    1.3、通过Accept或者Content-Type传输

    RFC地址:https://tools.ietf.org/html/rfc2616#section-14.1 

     Accept request-header字段可用于指定某些媒体    响应可接受的类型。

    语法定义

           Accept         = "Accept" ":"
                            #( media-range [ accept-params ] )
    
           media-range    = ( "*/*"
                            | ( type "/" "*" )
                            | ( type "/" subtype )
                            ) *( ";" parameter )
           accept-params  = ";" "q" "=" qvalue *( accept-extension )
           accept-extension = ";" token [ "=" ( token | quoted-string ) ]

    星号“*”字符用于将媒体类型分组到范围中,    “* / *”表示所有媒体类型,“type / *”表示某种type媒体类型下的左右子类型。

    每个媒体范围可以跟随一个或多个accept-params,以“q”参数开始,表示权重因子。第一个“q”参数(如果有)将媒体范围分开来自accept-params的参数。权重因子允许用户或代理设置,范围从0-1,默认值是1;

    示例一、

    Accept: text/*, text/html, text/html;level=1, */*

    优先权

           1) text/html;level=1
           2) text/html
           3) text/*
           4) */*

    实例二、

    Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
                   text/html;level=2;q=0.4, */*;q=0.5

    优先权

           text/html;level=1         = 1
           text/html                 = 0.7
           text/plain                = 0.3
           image/jpeg                = 0.5
           text/html;level=2         = 0.4
           text/html;level=3         = 0.7

    简单理解:Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

    意思:支持的 MIME 类型分别是 text/html、application/xhtml+xml、application/xml 和 */*,优先顺序是它们从左到右的排列顺序。

    详解:

      Accept表示浏览器支持的 MIME 类型;

      MIME的英文全称是 Multipurpose Internet Mail Extensions(多功能 Internet 邮件扩充服务),它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。

        text/html,application/xhtml+xml,application/xml 都是 MIME 类型,也可以称为媒体类型和内容类型,斜杠前面的是 type(类型),斜杠后面的是 subtype(子类型);type 指定大的范围,subtype 是 type 中范围更明确的类型,即大类中的小类。

        Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;

        text/html表示 html 文档;

        Application:用于传输应用程序数据或者二进制数据;

        application/xhtml+xml表示 xml格式的xhtml类型文档;

        application/xml表示 xml 文档。

     
     
  • 相关阅读:
    JavaScript对象 原型
    JavaScript数据类型 数据转换
    JavaScript字符串去除空格
    JavaScript实现StringBuffer
    JavaScript获取url参数
    JavaScript获取当前根目录
    React 和 Redux理解
    Umbraco 中获取一个media item的文件路径 file path
    Umbraco中获取UmbracoContext
    Umbraco中如何找到home node
  • 原文地址:https://www.cnblogs.com/bjlhx/p/10375597.html
Copyright © 2011-2022 走看看