资源

情况说明

DOI®分辨率文档

<返回到参考资料页

1. 使用代理服务器系统解析DOIs对uri中使用的doi进行编码代理服务器查询参数说明类风湿性关节炎?5. 代理服务器REST API

请注意,这些信息,以及关于DOI代理服务器系统、解析和编号的其他信息,可以在DOI手册

用户可以使用DOI系统代理服务器(https://doi.org(首选))解析结构化的DOI名称。在这种情况下,DOI名称的解析取决于URL语法的使用:示例DOI名称DOI:10.10.123/456将从地址:“https://doi.org/10.123/456”解析。任何遇到此表单中的DOI名的标准浏览器都能够解析它。代理服务(doi.org和早期但不再首选的dx.doi.org)可以通过IPv6访问,并支持DNSSEC。代理服务器响应HTTPS(首选)和HTTP请求。

1. 使用代理服务器系统解析DOIs

DOI系统使用Handle system®来管理数字对象(参见DOI概况介绍“DOI系统和DOI Handle system”)。在基础结构级别,DOI名是句柄。

DOI系统代理服务器基本上是一个知道如何与句柄系统对话的web服务器,在撰写本文时,在web上找到的大多数DOI®名称都嵌入在使用代理服务器进行DOI名称解析的url中。例如,对于将代理的域名与DOI名称组合在一起的任何HTTP请求

https://doi.org/10.1000/demo_DOI

代理将向句柄系统查询DOI名,获取句柄记录中的URL(或者,如果句柄记录中有多个URL,它将选择一个,并且该选择没有特定的顺序),并向用户的web浏览器发送指向该URL的HTTP重定向。

除了单个默认URL之外,越来越多的DOI名称还包含数据。这有时被称为多重分辨率。这些附加值是为更高级的应用程序使用的,这些应用程序有能力利用多个数据片段,例如,增强元数据或相关文档的位置。

除了URL类型的句柄值之外,代理服务器还理解句柄值类型10320/loc的值。这些值包含描述DOI名的多个重定向端点的XML,以及代理应该在哪些条件下使用它们。更多文档请参见DOI手册章节3.8.4.3,使用10320/loc句柄类型解析多个url。

代理服务器配置为在查询无法找到的DOI号时显示“DOI Name Not Found”错误页面。

DOI名10.1000/demo_DOI和10.1000/demo_DOI/都是有效的DOI名,但不太可能创建带有尾斜杠的DOI名。如果代理服务器接收到对带有斜杠的DOI号的解析请求,并且没有找到该DOI号,则代理服务器将返回一个错误报告,其中包括所请求的DOI号包含斜杠的警告,以及单击链接以解析没有斜杠的相同字符串。

DOI系统代理服务器实际上是运行在多个位置的多个服务器,负载均匀地分布在所有服务器上。为了加快解析速度,代理服务器缓存句柄值,TTL设置为24小时。这意味着,如果句柄值被更改,可能需要长达24小时才能返回新值。

请注意,IDF还为短DOI™服务运行一个代理服务器,该代理服务器不是这个DOI系统代理服务器规范的一部分。

2. 为uri中使用的doi编码

句柄系统使用UTF-8,一种Unicode实现,并且没有字符集约束。但是DOI系统代理服务器是一个web服务器,它使用HTTP语法向web浏览器发送重定向,因此DOI名称中的字符可能无法被web浏览器正确解释,例如' ?,应避免使用或进行编码。DOI中的非ASCII字符应该转换为UTF-8,并且每个非ASCII的UTF-8字节都应该进行%编码。

“#”是另一个例子。只有当您向DOI系统代理服务器发送DOI号时

10.1000 / res #测试

编码为

https://doi.org/10.1000/res%23test

代理将正确解析DOI名吗?如果它没有被编码,#test将被视为一个片段,并在它到达代理之前被web浏览器删除,然后代理将尝试解析10.1000/res。

表1和表2总结了DOI的编码准则。url具有最受限制的字符集。表1列出了应该始终采用十六进制编码的字符。表2列出了建议用十六进制编码替换的其他字符。列表之间的区别在于当前web浏览器的实际经验和更正式的URL语法规范之间的区别。在DOI目录中,所有字符表示它们自己。

表1:强制编码

字符 编码
25 (%)
(% 22)
(% 23)
空间 (% 20)
(% 3 f)
字符 编码
< (% 3 c)
> (% 3 e)
(% 7 b)
(% 7 d)
(% 5 e)
(% 5 b)
(% 5 d)
60 (%)
| (% 7 c)
(% 5度)
+ (% 2 b)

还要注意web浏览器对“/”的处理。/”和“/…/”可能不一致。建议其中一个斜杠是百分比编码的,例如,更改“/”。/“to”/。%2F "和" /.. "/ "到" /..%2F "。

3. 代理服务器查询参数

noredirect
不要使用URL或10320/loc值重定向;而是显示句柄值。
ignore_aliases
通常,代理将接受HS\_ALIAS类型的句柄值作为应该解析的句柄,而不是输入句柄;使用此参数时,HS\_ALIAS类型的值将被忽略。
身份验证
权威的查询。代理将绕过其缓存并在权威服务器上解析句柄。
cert
注册查询。代理将需要来自句柄服务器的经过身份验证的响应。最终用户通常不需要。
指数
只解析指定索引处的句柄值。可重复求解多个指标。
类型
只解析指定类型的句柄值。可以重复解析多个类型。
urlappend
此参数的值附加到用于重定向的URL的末尾。
locatt =键:值
用于多重重定向;指定一个键:值对,以确定从10320/loc值重定向的选择。
action = showurls
用于多重重定向;返回可能重定向位置的XML表示形式。
nols = y
一些图书馆和其他机构使用特殊的cookie使DOI系统代理服务器使用本地服务将用户重定向到“适当的副本”。例如,用户可能会被重定向到图书馆已经购买的期刊文章的全文,而不是一个显示收费的登录页面。用户可以添加“nols=y”查询参数,防止本地服务重定向。

4. 类风湿性关节炎?

类风湿性关节炎?是一个简单的服务,用于检查句柄解析返回的类型/值对,并提供可从doi.org代理系统获得的特定信息。该服务返回负责特定DOI或一组DOI的DOI注册代理(DOI Registration Agency, RA)的名称。当一个DOI名称被附加到字符串“https://doi.org/doiRA/”后,该URL的解析(HTTP GET)将返回一个指定RA名称的JSON。解析https://doi.org/doiRA/10.5240/B1FA-0EEC-C316-3316-3A73-L将返回:

[{DOI: 10.5240 / b1fa——欧共体- c316 - 3316 - 0 - 3 a73 - l”、“类风湿性关节炎”:“EIDR”}]

可以在这里找到RA名称和缩写的完整列表。在URL字符串中使用逗号来描述多个doi将在一个请求中返回多个结果。可能的错误状态包括“无效DOI”、“DOI不存在”和“未知”。

5. 代理服务器REST API

DOI系统代理服务器REST API允许使用HTTP编程访问DOI名称解析。

示例请求/响应

的标准HTTP GET可以发出REST API请求

/ api /处理/ <处理>

API返回JSON。

例如,https://doi.org/api/handles/10.1000/1产生响应

{“responseCode”:1、“处理”:“10.1000/1”,“值”:[{“指数”:100年,“类型”:“HS_ADMIN”、“数据”:{“格式”:“admin”、“价值”:{“处理”:“0. na / 10.1000”、“指数”:200年,“权限”:“011111111111”}},“ttl”:86400年,“时间戳”:“2000 - 04 - 13 - t15:08:57z”},{“指数”:1、“类型”:“URL”,“数据”:{“格式”:“弦”、“价值”:“http://www.doi.org/index.html”},“ttl”:86400年,“时间戳”:“2004 - 09 - 10 - t19:49:59z”}]}

响应格式

响应是一个JSON对象,其中包括一个“responseCode”(一个引用Handle协议响应代码的整数),解析的“句柄”的回显,以及一个“值”列表,或者在出现错误的情况下,一个可选的“消息”,它是一个描述错误的字符串。

每个值是一个JSON对象,一般有5个属性:

  • index:整数
  • type:字符串
  • “data”:一个对象,见下文
  • " ttl ":值的生存时间(以秒为单位),一个整数(或者,在绝对过期时间的罕见情况下,该过期时间为iso8601格式的字符串)
  • timestamp: iso8601格式的字符串

句柄值数据是一个具有属性" format "、" string "和" value "的对象。

  • 如果" format " = " string ",则" value "为字符串,将数据表示为UTF-8字符串。
  • 如果" format " = " base64 ",则" value "为字符串,数据采用base64编码。
  • 如果" format " = " hex ",则" value "是一个字符串,带有数据的十六进制编码。
  • 如果" format " = " admin ", " value "是一个对象,表示HS_ADMIN值,其属性为" handle "(字符串)," index "(整数)和" permissions "(字符串,表示权限的位掩码)。
  • 如果" format " = " vlist ", " value "是一个对象列表,代表一个HS_VLIST值;列表中的每个对象都有属性" handle "(字符串)和" index "(整数)。
  • 如果" format " = " site ",则" value "是一个对象,表示HS_SITE值。由于这个对象的结构很复杂,而且通常对技术兴趣有限,因此目前在本文档中省略了它。

响应代码

  • 1:成功。(http 200 ok)
  • 2:错误。在处理过程中出现了意外错误。(HTTP 500内部服务器错误)
  • 100:手柄未找到。(没有找到HTTP 404)
  • 200:未找到值。句柄存在但没有值(或者根据指定的类型和索引没有值)。(http 200 ok)

查询参数

这个DOI系统代理服务器REST API是cors兼容的,但是,使用“callback”查询参数也支持JSONP回调。

“pretty”查询参数的存在指示服务器以美观的方式打印JSON输出。

" auth "查询参数指示代理服务器绕过其缓存,直接向主句柄服务器查询最新的句柄数据。

“cert”查询参数指示代理服务器从源句柄服务器请求经过身份验证的响应。最终用户通常不需要。

“type”和“index”查询参数允许将解析响应限制为感兴趣的特定类型和索引。允许使用多个“type”和“index”参数,并返回与任何指定类型或索引匹配的值。例如,

例如,https://doi.org/api/handles/10.1000/1?type=URL&callback=processResponse产生响应

processResponse({“responseCode”:1、“处理”:“10.1000/1”,“值”:[{“指数”:1、“类型”:“URL”,“数据”:{“格式”:“弦”、“价值”:“http://www.doi.org/index.html”},“ttl”:86400年,“时间戳”:“2004 - 09 - 10 - t19:49:59z”}]});

注意:DOI系统使用Handle系统,因此DOI也可以使用Handle客户端而不是doi.org HTTP服务来解析。更多信息请参见https://www.doi.org/the-identifier/resources/factsheets/doi-system-and-the-handle-system和https://www.handle.net。

2020年7月4日更新