前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >侦测OpenWhisk的Web操作

侦测OpenWhisk的Web操作

作者头像
Eri1c
发布2018-01-04 10:30:06
8270
发布2018-01-04 10:30:06

我之前写过关于OpenWhisk的Web操作的文章,阐述了它们到底是如何允许你向客户端发送状态码和HTTP头,

并且通过如下的main()方法来返回一个带有关键状态码,heads头部和body正文部分的响应包的:

代码语言:javascript
复制
func main(args: [String:Any]) -> [String:Any] {
    return [
        "body": "<root>Hello world</root>",
        "code": 200,
        "headers": [
            "Content-Type": "text/xml",
        ],
    ]
}

如果此测试操作位于默认命名空间中,那么我们为其创建

wsk action update test test.swift -a web-export true

来启用Web操作支持并通过curl访问它:

代码语言:javascript
复制
curl https://openwhisk.ng.bluemix.net/api/v1/experimental/web/19FT_dev/default/test.http
 
<root>Hello world</root>

但是,当你借助于有效的POST API(例如通过curl或者wsk action invoke方法)来调用这个函数时,你会得到:

代码语言:javascript
复制
$ 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操作中的附加参数

当您的操作以Web操作的形式被调用时,则其他额外的参数不会加以显示。我们可以简单地寻找其中之一。举个例子,比如我选择查找__ow_meta_verb时。

这样做的简单方法:

代码语言:javascript
复制
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内部调用:

代码语言:javascript
复制
$ 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操作并没有改变,我们仍然能够得到XML数据。

我们还可以通过适当的途径调用我们的函数,来得到正确的响应。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档