检测OpenWhisk Web操作

我已经写了关于OpenWhisk的web actions,以及它们是如何允许你去调用main()方法返回一个数组的键状态,标题和正文来向客户端发送一个状态码和HTTP头的:

func main (args : String :Any ) - > String :Any {

return [

"body" : “<root> Hello world </ root>” ,

"code" : 200 ,

"headers" : [

“Content-Type” : “text / xml” ,

],

]

}

如果此测试操作位于默认命名空间中,那么我们将其创建 为启用web action支持并通过curl访问它:wsk action update test

test.swift -a web-export true

curl https://openwhisk.ng.bluemix.net/api/v1/experimental/web/19FT_dev/default/test.http
<root> Hello world </ root>

然而,当你通过认证的POST API(例如via curl或者wsk action invoke)调用这个函数时,你会看到:

$ 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 action时,则会有另外的参数不会以其他方式显示。我们可以简单地寻找其中之一。具体来说,我选择查找__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。

我们可以用适当的机制调用我们的函数,并产生正确的响应。

本文的版权归 古玉修 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java 成神之路

使用 NIO 实现 echo 服务器

5567
来自专栏Golang语言社区

【Golang语言社区】GO1.9 map并发安全测试

var m sync.Map //全局 func maintest() { // 第一个 YongHuomap := make(map[st...

5458
来自专栏转载gongluck的CSDN博客

cocos2dx 打灰机

#include "GamePlane.h" #include "PlaneSprite.h" #include "BulletNode.h" #include...

7206
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3675
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

38610
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

5228
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2870
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

8678
来自专栏魂祭心

原 canvas绘制clock

5124
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

3278

扫码关注云+社区