APIFunction
参数类型列表 »APIFunction[{"name1"type1,"name2"type2,…},fun]
表示参数为 namei 的 API,每当被调用时运行函数 fun. 函数 fun 被应用于"name1"val1,"name2"val2,…,其中 vali 是对参数的设置,解释为类型 typei.
APIFunction[{"name1"type1default1,…},fun]
当 API 被调用时,若参数值 namei 未指定,则取 defaulti.
APIFunction[params,fun,fmt]
指定应用 fun 的结果应该以格式 fmt 返回.
APIFunction[params,fun,{fmt,rform}]
指定结果应该作为形式为 rform 的响应返回.
APIFunction[params,fun,{fmt,rform,failfmt}]
指定事件失败时结果应以 failfmt 格式返回.
更多信息和选项
- CloudDeploy[APIFunction[…]] 部署 API 函数,以便可以在云端从外部调用,调用方式是使用网络 WEB 请求(比如从网页浏览器),或者使用 POST 请求.
- 在网页查询字符串或 POST 请求中,APIFunction 取参数设置 namei=stri,并转换为应用 fun 的关联中的元素 "namei"->Interpreter[typei]["stri"].
- 在 Wolfram 语言内部,APIFunction[…][assoc] 可以用来重现调用 API 函数的效果,其中参数设置在 assoc 中给出. 在这种情况下,如果有任何设置不是字符串,它们的值被直接使用,而无需类型解释.
- typei 规范的可能形式有:
-
"form" 由 Interpreter 支持的任何形式 Restricted[…], etc. 由 Interpreter 支持的任何受限形式等 Interpreter[…] 任何 Interpreter 对象 assoc 给出如何处理参数细节的关联 tfun 应用于字符串的任何函数 - 关联中的可能元素包括:
-
"Interpreter" 用于此参数的解释器 "Required" 是否要求此参数 "Default" 参数的默认值(如果有的话) "AllowedExtensions" 此参数所允许的扩展名 "Help" 帮助与参数关联 - "AllowedExtensions" 的默认值为 Inherited,对应于 APIFunction 选项 AllowedCloudParameterExtensions 的设置中所指定的扩展名.
- 当在云端被调用时,APIFunction[params,fun] 默认返回结果的 Wolfram 语言文本形式.
- 在 APIFunction[params,fun,fmt] 中的可能结果格式 fmt 是:
-
"fmt" 由 ExportForm 支持的任何格式 f 应用于 body 的任意函数 - 在部署时,APIFunction[params,fun,"fmt"] 等价于 APIFunction[params,ExportForm[fun[#],"fmt"]&]. 注意,当在笔记本中计算 APIFunction 时,ExportForm 将不会显示.
- 典型的可能结果格式包括:
-
None 纯 Wolfram 语言文本(默认) "GIF","JPEG","PNG",… 结果的图像 "String" 作为原始字符串的字符串结果 "HTML" 结果的纯 HTML 版本 "HTMLThemed" 有内置主题的静态 HTML "HTMLPaneled" 面板中的 HTML 内容 - APIFunction 支持下列选项:
-
AllowedCloudExtraParameters None API 所允许的额外参数 AllowedCloudParameterExtensions Automatic 参数所允许的扩展名 ImageFormattingWidth Automatic 输出格式的封装宽度 ImageSize Automatic 输出的全局图像尺寸 - 在部署时,APIFunction[params,fun,{"fmt","rform"}] 等价于 APIFunction[params,ResponseForm[ExportForm[fun[#],"fmt"],"rform"]&]. 注意,当在笔记本中计算 APIFunction 时,ResponseForm 或 ExportForm 都不会出现.
- 如果参数没有被成功地解释,则 fun 不被应用,而返回的结果是Failure["src",<fname1->Failure[…],fname2->Failure[…] >],其中 fnamei 是解释失败的参数名称.
- 如果无默认值的参数缺失,则生成 Failure["MissingParameter",…].
- 如果指定了 rform,Failure[…] 表达式直接传递给响应形式,不论 fmt 是否被指定.
- 当由 APIFunction[…] 定义的 API通过网络被调用时,如果参数被成功地解释,将返回 200 HTTP 状态码,且应用 fun 的结果不是 Failure[…]. 否则返回 400 状态码.
- 在 APIFunction[params,…] 中,params 可以是 FormObject 或用作 FormFunction 中形式规范的其他形式. 与 API 不相关的形式规范的特点将被忽略. APIFunction 允许与 FormFunction 相同的选项,但忽略那些不适的选项.
- 在 APIFunction[…,fmt] 或 APIFunction[…{fmt1,…}] 中,可用字符串格式或 {"fmt",optname1optvalue1,…} 列表形式给出任意一个 fmt 表达式,其中,optnamei 是 "fmt" 格式的选项.
范例
打开所有单元关闭所有单元基本范例 (4)
一个 API 函数,其中一个名为 x 的参数应用于 Association:
使用 CloudDeploy 将 API 函数部署到 Wolfram Cloud:
部署的 API 函数可以通过在 Web 浏览器中访问云端对象被调用,并把 ?x=value 附加到它的 URL 中:
如果调用 APIFunction 时输入数据不足,则返回 Failure:
范围 (6)
选项 (3)
AllowedCloudExtraParameters (1)
允许 APIFunction 的调用者设置输出结果所用的格式:
如果 "_exportform" 参数未在调用中指定,APIFunction 将不会输出结果:
AllowedCloudParameterExtensions (2)
应用 (7)
部署 BarChart API:
部署 API 以建立并重定向到新的 FormFunction:
属性和关系 (9)
已部署的 API,可以从任何 HTTP 客户端(当需要时提供正确的身份验证)来访问:
APIFunction 被设计为可与 FormFunction 互换:
APIFunction 接受与 FormFunction 相同的选项,但忽略其中大部分:
APIFunction 的单一字段使用 Interpreter 将输出转换为 Wolfram 语言表达式:
并且与直接应用 Interpreter 相同:
执行一个 APIFunction,其中 $EvaluationEnvironment 被设为 "WebAPI", $CloudEvaluation 被设为 True:
CloudEvaluate 的运行环境为 "WebEvaluation":
APIFunction 可用于根据输入参数按需进行计算. 对于不依赖任何输入参数的计算,也可以使用 Delayed:
使用 APIFunction 的等效代码:
对于执行 API 函数和使用 CloudEvaluate,$CloudEvaluation 的结果都为 True:
对于默认设置 IncludeDefinitionsTrue,部署 API 函数包括它依赖的所有定义:
可能存在的问题 (3)
当手动建立一个 APIFunction 的查询,对其应用 URLEncode 很重要:
注意到调用带有规则列表的 URLExecute 将自动对查询参数进行编码:
通常不会在同一 Wolfram 引擎中计算对同一 APIFunction 的多个请求,因此,定义不会在请求之间持久存在:
文本
Wolfram Research (2014),APIFunction参数类型列表 »,Wolfram 语言函数,https://reference.wolfram.com/language/ref/APIFunction.html (更新于 2017 年).
CMS
Wolfram 语言. 2014. "APIFunction参数类型列表 »." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2017. https://reference.wolfram.com/language/ref/APIFunction.html.
APA
Wolfram 语言. (2014). APIFunction参数类型列表 ». Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/APIFunction.html 年