【问题标题】:What is a "cURL" and how do I execute it?什么是“cURL”以及如何执行它?
【发布时间】:2018-11-13 15:20:11
【问题描述】:

我一直在尝试制作 Lyrebird 应用程序。请注意,我只有基本的 javascript/php 知识并且从未这样做过,所以我尝试实现一个 cURL 请求:“http://docs.lyrebird.ai”。不用说它在 javascript 和 PHP 中都不起作用(尽管我查了一下如何做到这一点?)

我只需要运行这个例子(细节是假的):

# Request #

curl -H 'Content-Type: application/json'
'https://avatar.lyrebird.ai/api/v0/token' -d
'{
    "grant_type": "authorization_code",
    "client_id": "19qV2jZy1G44ifOxk6kgowAt9F0",
    "client_secret": "19qnfRvIXdmQKhSbLG0CLxng5Mz",
    "code": "19qozJe3hwnPvfl5xyNuR3MJ1NK"
}'

# expected Response #
{
    "access_token": "18QdNlaDvkzMbgQ5SXmKNGmexWo"
}

如何运行请求(编程语言?)以获取示例中提到的“预期响应”?

【问题讨论】:

  • 你已经用 php 和 node.js 标记了这个。你两个都用吗?您可以在节点中为此使用几个不同的请求库,php 也有 cUrl 扩展,Guzzle 是 php 中的有用库
  • 这是您从 shell 运行的程序(至少,您的示例是):curl.haxx.se/docs/manual.html
  • 老实说,我不知道该使用哪些工具。我使用标准 javascript 并且可能正在为这个项目使用节点。但现在我只是想知道如何获取我的访问令牌

标签: javascript curl


【解决方案1】:

curl 是一种使用支持​​的协议之一(DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、 IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMB、 SMBS、SMTP、SMTPS、TELNET 和 TFTP)。该命令旨在工作 无需用户交互。 -- https://curl.haxx.se/docs/manpage.html

如果我理解您的问题,您想要实现的是将 curl 转换为您最喜欢的 (PHP) 语言?

有很多不同的方法可以做到这一点,但这是我最喜欢的 2 个:

邮递员

Postman 允许您导入 curl 命令以供以后操作,并且一旦您的命令被导入,您实际上可以从包括 PHP 在内的大量支持的语言列表中生成 code sn-ps

Curl-to-PHP

本网站采用复制粘贴转换方式。

【讨论】:

    【解决方案2】:

    curl 是一个 linux 命令,用于从命令行执行对 url 的 http 请求。您发布代码的教程只是一个创建对 url 的 http-post 请求的示例。

    您应该检查您的编程语言(PHP 或 node.js)的 API 以了解如何执行 http-post 请求。这是一个关于如何从 node.js 发布 http 帖子的问题:How to make an HTTP POST request in node.js?

    【讨论】:

      【解决方案3】:

      在 js 中你可以使用例如获取:

      var data={
          grant_type: "authorization_code",
          client_id: "19qV2jZy1G44ifOxk6kgowAt9F0",
          client_secret: "19qnfRvIXdmQKhSbLG0CLxng5Mz",
          code: "19qozJe3hwnPvfl5xyNuR3MJ1NK"
      }
      fetch('https://avatar.lyrebird.ai/api/v0/token', {
          method: 'POST',
          headers: { "Content-Type": "application/json" },
          credentials: 'include',
          body: JSON.stringify(data)
      }).then(function(res) {
          return res.json();
          }).then(function(res){
              console.log(res);
          }).catch((e)=>{alert (e)})
      

      【讨论】:

      • 大多数使用客户端密码的 API 未启用 CORS,因此您不会在前端公开凭据
      猜你喜欢
      • 2016-09-12
      • 2014-08-26
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 2021-11-12
      相关资源
      最近更新 更多