如何将curl请求发送到timekit.io API

时间:2017-11-10 01:28:56

标签: rest http curl

我正在尝试关注timekit.io中的文档。我正在尝试做一些简单的事情,如发送curl请求进行基本身份验证,如文档this section中所示。我已将Timekit-App:name-of-app替换为我在appkit帐户的app-settings中找到的app的名称。我还替换了email& password使用我用来登录我帐户的那个。

我只是简单地将curl命令复制并粘贴到我的终端中,然后我收到一条回复说{"error":"Content-type should be json!"}我不确定我是不是应该按原样复制和粘贴它,或者我可能是什么做错了,但我的理解是我应该在其他一些数据中使用emailapi令牌获得json响应。

这是我的curl命令。

curl -X POST \
   -H 'Timekit-App: jl-fit' \
   -d '{
         "email": "email@email.com",
         "password": "password"
       }' \
   https://api.timekit.io/v2/auth

1 个答案:

答案 0 :(得分:1)

看起来您在他们的文档/示例中发现了一个错误。

您要连接的API需要JSON内容类型,但默认情况下curlPOST数据)使用application/x-www-form-urlencoded。您可以通过以下方式明确添加标题字段来修复它:-H 'Content-Type: application/json'

此外,当您使用-d / --data选项时,方法默认为POST,因此不必明确指定。

所有这些都应该有效:

curl \
   -H 'Content-Type: application/json' \
   -H 'Timekit-App: jl-fit' \
   -d '{"email": "email@email.com", "password": "password"}' \
   "https://api.timekit.io/v2/auth"

当有多个参数时,将它们保存在数组中是很方便的(不需要转义换行符)。例如:

args=(
   -H 'Content-Type: application/json'
   -H 'Timekit-App: jl-fit'
   -d '{"email": "email@email.com", "password": "password"}'
   "https://api.timekit.io/v2/auth"
)
curl "${args[@]}"