1

我正在尝试使用 IBM OpenWhisk。它有自己的 CLI,但我想使用curl.

curl -d-data '{"message": "hellow world"}' https://user:password@openwhisk.ng.bluemix.net:443/api/v1/namespaces/whisk.system/action/samples/echo
curl: (6) Couldn't resolve host '"message": "hello world"'
{
  "error": "HTTP method not allowed, supported methods: GET",
  "code": 81107
}

如何通过 curl 或类似工具调用 OpenWhisk,如何进行身份验证?

4

3 回答 3

7

身份验证是通过Basic Authentication完成的,因此您可以-u在 curl 中使用该标志。使用您使用的user:pass@url版本应该也可以。

要调用您必须使用的操作POST,因此-XPOST. 此外,API 期望application/json为 Content-Type。数据通过-dcurl 中的标志发送。

您的网址中也有错字。您需要使用actions而不是action(整个API使用复数形式)。

总而言之,您的请求应如下所示:

curl -XPOST -H "Content-Type: application/json" -d '{"message": "hello world"}' -u $USERNAME:$PASSWORD https://openwhisk.ng.bluemix.net/api/v1/namespaces/whisk.system/actions/samples/echo

有一篇博客文章涵盖了这个主题。对于阻止操作,只需添加?blocking=true作为参数。

于 2016-03-11T14:58:31.610 回答
4

wsk CLI 还有一个非常方便的“-v”选项,它可以显示 HTTP 请求和标头,所以如果你这样做:

wsk -v action invoke hello --blocking

您将看到实际的 REST API 调用。

于 2016-03-11T16:55:05.913 回答
0

身份验证通过基本身份验证完成。为“授权”添加 HTTP 标头。使用字符串

'Basic'+base64Encoded(username+':'+password)

其中 base64Encoded(str) 是 base64 加密字符串的方法。

您可以通过https://console.ng.bluemix.net/openwhisk/learn/cli或通过 wsk cli在 Bluemix 上找到您的 OpenWhisk 帐户的用户名和密码 : wsk 属性获取它包含位于格式“用户名:密码”

于 2017-03-11T19:53:05.103 回答