【问题标题】:How to send a curl request to timekit.io API如何向 timekit.io API 发送 curl 请求
【发布时间】:2018-04-23 04:26:12
【问题描述】:

我正在尝试遵循timekit.io 的文档。我正在尝试做一些简单的事情,比如发送一个 curl 请求来进行基本身份验证,如文档的this section 所示。我已将 Timekit-App:name-of-app 替换为我在 timekit 帐户的应用程序设置中找到的应用程序名称。我还将emailpassword 替换为我用来登录我的帐户的那个。

我只是将 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

【问题讨论】:

  • 尝试添加-H 'Content-Type: application/json'。看起来像是他们文档中的错误。
  • 您是否愿意将其发布为答案,以便我选择它作为解决方案。
  • 当然,如果能解决的话。 :)

标签: rest http curl


【解决方案1】:

您似乎在他们的文档/示例中发现了一个错误。

您要连接的 API 需要 JSON 内容类型,但默认情况下 curl(对于 POSTing 数据)使用 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[@]}"

【讨论】:

    猜你喜欢
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    相关资源
    最近更新 更多