一、概述

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 文档。

 
 

003-RFC关于媒体类型说明的更多相关文章

  1. HTTP 的 Content-Type 及其媒体类型(MIME)

    Content-Type Content-Type 代表 HTTP 携带的文件类型,决定文件接收方或发送方将以什么形式.什么编码读取这个文件.下图,load.gif 的媒体类型就是 image/gif ...

  2. 样式link属性media用法--媒体类型查询

    引用外部样式使用link 你可能想针对将要显示页面的设备类型(桌面PC.笔记本电脑.平板电脑.手机或者甚至页面的印刷版本)来调整页面的样式,可以利用一个media属性, 在<link>元素 ...

  3. HTTP请求415错误 – 不支持的媒体类型(Unsupported media type)

    HTTP请求415错误 – 不支持的媒体类型(Unsupported media type) 通常有以下情况: 1:检查你的 http 请求头信息,比如 因为 User-Agent 被服务器设置 拒绝 ...

  4. Media Queries——媒体类型

    媒体类型(Media Type)在CSS2中是一个常见的属性,也是一个非常有用的属性,可以通过媒体类型对不同的设备指定不同的样式. 在CSS2中常碰到的就是all(全部).screen(屏幕).pri ...

  5. media query(媒体查询)和media type(媒体类型)

    media type(媒体类型)是css 2中的一个非常有用的属性,通过media type我们可以对不同的设备指定特定的样式,从而实现更丰富的界面.media query(媒体查询)是对media ...

  6. [日常] HTTP的媒体类型

    HTTP的媒体类型 1.MIME类型的数据格式标签(MultIpurpose Internet Mail Extension) 2.最初用于电子邮件系统之间搬移,多用途互联网邮件扩展 3.MIME类型 ...

  7. Web API中给领域模型添加媒体类型支持

    一.媒体类型 媒体类型(也称为MIME类型)标识一段数据的格式.在HTTP中,媒体类型描述了消息体的格式.媒体类型由两个字符串组成,一个类型和一个子类型.例如:text / html: image/ ...

  8. ASP.NET Web API 2 媒体类型格式化程序

    Ø  简介 在之前的ASP.NET Web API 2 消息处理管道文章中有提到,在 Web API 的生命周期中,还包含比较中要的一部分,就是媒体类型格式化程序,该程序主要用于处理 Web API ...

  9. 互联网媒体类型 MIME Type

    参考:https://zh.wikipedia.org/wiki/%E4%BA%92%E8%81%94%E7%BD%91%E5%AA%92%E4%BD%93%E7%B1%BB%E5%9E%8B 互联网 ...

随机推荐

  1. Eclipse常用的几个快捷键

    快速修正: Ctrl+1 查看方法说明: F2 单词补全: Alt+/ 快速层次结构: Ctrl+T 保存: Ctrl+S 变为大/小写:   Ctrl+Shift+X/Y 前一个编辑的页面: Alt ...

  2. ImageMagick、imagick和ghostscript三者的关联

    http://467754239.blog.51cto.com/4878013/1602518/ 一.功能概述 ImageMagick是第三方的图片处理软件,功能要比GD强大.建议两者都安装,并不冲突 ...

  3. MySQL 删除数据库中重复数据方法

    1. 查询需要删除的记录,会保留一条记录. select a.id,a.subject,a.RECEIVER from test1 a left join (select c.subject,c.RE ...

  4. Atom与markdown

    简述 Atom是github开发的开源跨平台的编辑器,Atom的强大可以与大名鼎鼎的Sublime Text相媲美.因为使用过Sublime Text,所以用Atom上手很快.这篇文章主要介绍使用At ...

  5. 7.11登入表单html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 170828、Eclipse Java注释模板设置详解以及版权声明

    编辑注释模板的方法:Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素 ...

  7. 170824、storm 环境搭建

    /*********************storm 环境搭建 **********************/ 1 安装jdk1.7 2 安装zookeeper集群环境 3 安装Python2.6. ...

  8. WebSphere Application Server V8.5.5.0

    Downloadable files Abstract IBM WebSphere Application Server Version 8.5.5 Refresh Pack for all plat ...

  9. notbook1.1

    1)95年创建java语言 2)1.2版本使java具有了生产能力 3)1.8版本增加 新的API lamda 函数式编程1.9 使之模块化 4)java编程的基本套路 1. 编写源代码2. 编译源程 ...

  10. tomcat运行模式

    Tomcat Connector的三种不同的运行模式性能相差很大 这三种模式的不同之处如下: BIO: 一个线程处理一个请求.缺点:并发量高时,线程数较多,浪费资源. Tomcat7或以下,在Linu ...