一、概述

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. [SLAM] 03. ORB-SLAM2

    一年后再读SLAM~ 行业有了不少工程实践方面的突破 一.链接:https://www.zhihu.com/question/53571648/answer/176732257 目前来说,受到业界肯定 ...

  2. 8 -- 深入使用Spring -- 5...3 使用@CacheEvict清除缓存

    8.5.3 使用@CacheEvict清除缓存 被@CacheEvict注解修饰的方法可用于清除缓存,使用@CacheEvict注解时可指定如下属性: ⊙ value : 必须属性.用于指定该方法用于 ...

  3. dokcer使用--link 让容器相连

    在使用Docker的时候我们会常常碰到这么一种应用,就是我需要两个或多个容器,其中某些容器需要使用另外一些容器提供的服务.比如这么一种情况:我们需要一个容器来提供MySQL的数据库服务,而另外两个容器 ...

  4. U3D 垂直同步

    Unity3D中新建一个场景空的时候,帧速率(FPS总是很低),大概在60~70之间.一直不太明白是怎么回事,现在基本上明白了.我在这里解释一下原因,如有错误,欢迎指正.在Unity3D中当运行场景打 ...

  5. .Net Core 部署到Ubuntu 16.04 中的步骤

    需要安装的工具 .Net Core Nginx反向代理服务器(相当于Windows下的IIS) Supervisor(进程管理工具) .Net Core安装方法请参阅 官方文档 安装完成后就可以在项目 ...

  6. Windows下MySQL的绿化与精简

    MySQL本身就支持安装使用,本文只是对自己使用免安装版MySQL的经历记录下来,以便以后查看. 首先是获取Windows下的MySQL免安装版本,这个需要去到MySQL官网进行下载.我一般喜欢把首页 ...

  7. 10.10xadmin

    2018-10-10 15:11:55 这几天讲的是xadmin插件 就是把表单,数据内容封装到类里面,简化的增删改查步骤! 放上源代码: app01/xadim.py from django.con ...

  8. 解决css设置背景透明,文字不透明

    设置元素的透明度:  -moz-opacity:0.8; /*在Firefox中设置元素透明度  filter: alpha(opacity=80); /*ie使用滤镜设置透明   但是当我们对一个标 ...

  9. IT资源关东煮第一期【来源于网络】

    IT资源关东煮第一期[来源于网络] 地址:http://geek.csdn.net/news/detail/128222

  10. InputStream只能读取一次的解决办法 C# byte[] 和Stream转换

    x 情景--->>> 导入文件的时候,前台传过来一个文件, 后台接到: HttpPostedFileBase file = Request.Files[];由于对这个文件后台处理比较 ...