Rest 我对媒体类型的理解正确吗?

Rest 我对媒体类型的理解正确吗?,rest,media,hateoas,Rest,Media,Hateoas,1)假设当媒体类型名称设置为“X/xml”时,软件代理SA能够识别表示格式RF中包含的超媒体控件 a)如果SA收到以下HTTP回复(其中包含RF),则媒体类型名称text/xml中的“text”部分通知SA它应该将RF处理为纯xml(因此它不应该尝试识别超媒体控件) 2)如果我在1)中的理解是正确的,那么我假设“xml”(在媒体类型名称X/vnd.Y+xml中说“X/vnd.Y”)前面的所有值都用于通知软件代理它应该使用哪个处理模型处理xml文档 编辑: 我事先为我的话太冗长而道歉 1) 为了澄

1)假设当媒体类型名称设置为“
X/xml
”时,软件代理SA能够识别表示格式RF中包含的超媒体控件

a)如果SA收到以下HTTP回复(其中包含RF),则媒体类型名称
text/xml
中的“
text
”部分通知SA它应该将RF处理为纯xml(因此它不应该尝试识别超媒体控件)

2)如果我在1)中的理解是正确的,那么我假设“
xml
”(在媒体类型名称
X/vnd.Y+xml
中说“
X/vnd.Y
”)前面的所有值都用于通知软件代理它应该使用哪个处理模型处理xml文档

编辑:

我事先为我的话太冗长而道歉

1)


为了澄清这一点,XML没有超媒体控件。我想你是说 支持超媒体的XML格式,如Atom(应用程序/Atom+XML)

我知道XML只是一种标记语言,因此没有超媒体控件。但我的理解是,如果我的自定义媒体类型
MyMedia/xml
BeMyLink
元素(在xml模式名称空间
mychemanamespace
中定义)标识为超媒体控件,那么在按照
MyMedia/xml
处理以下xml文档时(因此,当
Content-Type
标题设置为
MyMedia/xml
)时,
BeMyLink
元素被视为超媒体控件:


?

2)

假设“X”是“应用程序…”

你能澄清一下你在这里的意思吗?可能该媒体类型名称是
application/xml

3)

如果“X”不是“应用程序”,而是其他类型,则可能不安全 让您的代理解析文档

X不只是描述(在处理模型方面)如何解释/解析资源表示吗?因此,只要代理尝试处理此表示(通过HTTP响应接收,且
内容类型标题设置为
blahblah/xml
),我就不能为媒体类型名称
X/xml
的一部分命名我想要的任何内容(比如
blahblah/xml
)(即知道如何根据媒体类型
blahblah/xml
)的
blahblah/xml
给出的说明处理此表示

2.编辑

1)

这就是为什么您应该使用标准媒体类型,而不是 自定义媒体类型——因为最终,媒体类型本身不是 应用程序行为的驱动程序

使用标准媒体类型不是一个缺点,因为当代理接收到资源表示时,它不会仅仅通过检查媒体类型值来知道它是否在语义上理解表示,而使用自定义媒体类型,代理可以通过查看媒体类型值来判断它是否知道资源表示的语义含义

2)

这就是为什么您应该使用标准媒体类型

然后我还假设我们应该只使用标准(即那些注册了IANA的)rel值

3)

更高级别的应用程序语义通过外部 文档,而不是媒体类型。通过记录REL 和链接以及表示中的命名值的含义

也许我在吹毛求疵,但是。。。您说更高级别的语义应该通过外部文档而不是媒体类型来传达,但是您注意到rel值的文档应该传达更高级别的语义。但是,在很多情况下(并非总是如此,因为rel值也可以独立定义,例如在IANA注册的rel值),rel值不是被视为媒体类型的一部分吗


谢谢你澄清一下,XML没有超媒体控件。我想您指的是支持超媒体的XML格式,如Atom(
application/Atom+XML

1a)来自:

纯文本旨在“按原样”显示。。。在应用软件可能增强文本外观的情况下,其他子类型将用于格式中的丰富文本,但为了获得内容的总体概念,不得需要此类软件

在您的示例中,收到
text/xml
响应的软件代理可以选择增强文档的显示(可单击链接、语法突出显示等)。见注1

1b)假设“X”是“应用程序”,则是,您的代理可以自由解析超媒体控件的文档,并使用它们决定未来的操作。如果“X”不是“application”,而是其他类型,那么代理解析文档本身可能不安全

2) 你基本上是对的。有关更多信息,请查看和

对编辑的响应:

媒体类型的形式为
type/[vnd.]子类型[+后缀]
。由于“类型”在这种情况下有点含糊不清,我们通常称之为“顶级媒体类型”。声明新的顶级媒体类型的原因很少,因此除非您完全确定需要它,否则请遵循以下标准:文本、图像、音频、视频和应用程序。
[vnd.]
是可选的供应商前缀,用于表示非标准子类型。
[+后缀]
用于表示您的自定义子类型何时是现有标准子类型的专用化

如果要定义自定义XML格式,请使用
application/vnd.mymedia+XML
。使用
应用程序
表示文档拟用于co
HTTP/1.1 200 OK
       ...
Content-Type: text/xml
       ...
<order xmlns=″...″>
       ...
  <link rel=...″
        href=...″/>
</order>
HTTP/1.1 200 OK
       ...
Content-Type: X/xml
       ...
<order xmlns=″...″>
       ...
  <link rel=...″
        href=...″/>
</order>
<MyCreation xmlns="MySchemaNamespace">
      <BeMyLink rel="..."
                href="..."/>
</MyCreation >