检测OpenWhisk Web Actions
时间:2022-04-22
本文章向大家介绍检测OpenWhisk Web Actions,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我已经写了一篇文章,它是关于OpenWhisk Web actions,以及他们是如何让你通过向客户端发送一个状态码和HTTP头后,在main()方法中得到一个带有键状态,标题和正文的字典返回:
func main (args : [ String :Any ] ) - > [ String :Any ] {
return [
"body": "<root>Hello world</root>",
"code": 200,
"headers": [
"Content-Type": "text/xml",
],
]
}
如果这个测试action位于默认命名空间,那么我们用命令wsk action update test
创建它
用命令test.swift -a web-export true
去开启Web Action支持并通过以下的curl访问它:
curl https://openwhisk.ng.bluemix.net/api/v1/experimental/web/19FT_dev/default/test.http
<root> Hello world </ root>
但是,当你调用一个认证的POST API(例如通过curl或者wsk action 调用),你会看到:
$ AUTH = $(wsk property get --auth | awk'{printf(“%s”,$ 3 )} | | openssl base64 | tr -d“ n”)
$ curl -X POST -H "Authorization: Basic $AUTH" “https://openwhisk.ng.bluemix.net/api/v1/namespaces/19FT_dev/actions/test?blocking=true&result=true”
{
"body": "<root>Hello world</root>",
"code": 200,
"headers": {
"Content-Type": "text/xml"
}
}
这是能被预见的,因为认证的POST API调用只是执行操作并发送它返回的内容。
Web Action中的其他参数
当您的操作被称为Web操作时,则会有额外参数不会以其他方式显示。我们可以简单地看下其中一个。例如,我选择查找__ow_meta_verb。
这样做的简单方法:
func main(args: [String:Any]) -> [String:Any] {
if args["__ow_meta_verb"] == nil {
return ["root": "Hello world"]
}
return [
"body": "<root>Hello world</root>",
"code": 200,
"headers": [
"Content-Type": "text/xml",
],
]
}
请注意,我们得到一个字典返回,正如调用认证的POST API所期望的。通过curl内部调用:
$ curl -X POST -H "Authorization: Basic $AUTH"
"https://openwhisk.ng.bluemix.net/api/v1/namespaces/19FT_dev/actions/test?blocking=true&result=true"
{
"root": "Hello world"
}
(我们通过这种方式只能获得JSON)
当然,调用web action并没有改变,我们仍然能得到XML。
我们可以在任何情况下运用合适的方法,并产生正确的响应。
- Spring Cloud构建微服务架构:服务注册与发现
- 自定义Interpolator
- 解决adb push时出现的"Read-only file system"问题
- 1个掷硬币问题,4个Python解法
- 用xml来编写动画
- VIM常见用法总结
- Spring Cloud构建微服务架构:服务消费者
- android微信登录,分享
- 注册会计师带你用Python进行探索性风险分析(二)
- Android监听自身卸载,弹出用户反馈调查
- Spring Boot 1.5.x新特性:动态修改日志级别
- XMPP客户端库Smack 4.0.6版开发之二
- Spring Cloud实战小贴士:版本依赖关系
- 如何优雅的用Python做接口自动化测试
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Kubernetes 1.19.0——deployment(3)
- Selenium-01-测试环境搭建使用
- Selenium-02-常用元素定位
- SpringBoot + Vue 前后端分离项目下载视频文件踩坑记录
- Selenium-03-常用方法
- 用Python里面的Xpath完成一个在线汇率转换器
- 详解请求消息 resquest
- Android中窗口Input事件接收
- Linux下常用命令
- Cypress系列(53)- as() 命令详解
- Educational Codeforces Round 81 (Rated for Div. 2) A. Display The Number
- Cypress系列(55)- 设置全局 URL
- Linux不同共享库中同名函数的处理
- Cypress系列(56)- 避免访问多个站点
- Cypress系列(57)- 删除等待代码