文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

cURL简介:高级程序员都在用的工具

2024-12-10 15:12

关注

与cURL一起使用的选项很多,我们在此介绍的是可用于快速测试API端点的基本选项。

[[345433]]

介绍

cURL是一种用于从服务器传输数据或向服务器传输数据的传输工具。它支持各种互联网传输协议,包括:

我们可以使用cURL执行一些有用的技巧,如代理支持、用户身份验证、FTP上传、HTTP post、SSL连接、cookie、文件传输恢复、Metalink等等。

cURL是在命令行中使用的,在软件开发过程中,它主要是用来快速测试API的。当我想在Node.js服务器中测试我所有的API时,我个人使用cURL。对于开发者来说,这是一个非常方便的工具。

 Postman很酷,但是cURL非常酷。

– Chidume Nnamdi

在本文中,我们将介绍基本的cURL函数和选项。我们还将学习如何使用cURL在API端点上执行GET,POST请求。

cURL选项

(1) --request 或者 -X

—request 和 -X 指定与HTTP服务器通信时可以使用的自定义请求方法,将使用指定的请求方法代替其他方法(默认为GET)。

要执行POST请求:

  1. curl --request POST 

要执行GET请求:

  1. curl --request GET 

(2) --url

这指定了我们将获取或传输数据的URL,当你想在配置文件中指定URL时,这个选项非常方便。

如果给定的URL缺少scheme name(例如“http://””或“ftp://””等),则cURL将基于主机进行猜测。

如果最外面的子域名与DICT,FTP,IMAP,LDAP,POP3或SMTP匹配,则将使用该协议。否则,将使用HTTP。

例如,如果你想在本地服务器上的 localhost:3000 上执行GET请求,则需要将 --url 设置为 localhost:3000:

  1. curl --request GET \ 
  2.     --url http://localhost:3000 

要在同一URL上执行POST:

  1. curl --request POST \ 
  2.     --url http://localhost:3000 

注意:反斜杠 \ 用于分隔cURL中的选项。

对于外部API,还是一样。

假设你要从https://moviesdb.com/movies/all获取电影列表。

  1. curl --request GET \ 
  2.     --url https://moviesdb.com/movies/all 

moviedb 中所有电影的列表都将被获取并打印。

(3) --header 或者 -H

这个选项用于设置请求的头信息。

当向服务器发送HTTP时,在请求中包含的额外头。你可以指定任意数量的额外头。请注意,如果你要添加一个自定义的头文件,而这个头文件的名字与 curl 内部使用的头文件相同,那么你在外部设置的头将被用来代替内部头。

这反映了我们在正常编程中的做法,特别是在JavaScript中使用 XMLHttpRequest:

  1. const xhttp = new XMLHttpRequest() 
  2. xhttp.setHeader("Content-Type", "application/json") 

头信息用于向Web服务器传达传入的数据类型,或期望的数据类型,发送的数据类型应与标头中指定的类型相同。

我们可以使用头文件来获得CORS权限,甚至可以获得某些类型的请求方法的权限。我们可以用头文件做的事情有很多。

因此,在cURL中,我们可以使用 —header 选项设置标头:

  1. curl --request POST \ 
  2.   --url http://localhost:5000/api/user \  --header 'content-type: application/json' 

这里,我们正在向http://localhost:5000/api/user 端点发出 POST 请求,并通过 --header content-type: application/json’ 告诉服务器我们要发送的数据是 JSON 数据类型。

(4) --data 或者 -d

此选项用于将数据发送到HTTP服务器,这主要是在POST请求中使用,因为我们将数据发送到我们要添加到数据库的服务器。因此,在cURL中,我们可以通过设置 —data 选项将数据指定为POST。

在POST请求中向HTTP服务器发送指定的数据,就像浏览器在用户填写HTML表格并按下提交按钮时一样。

这是一个例子:

  1. curl --request POST \ 
  2.   --url http://localhost:5000 \ 
  3.   --header 'content-type: application/json' \ 
  4.   --data '{"name":"Arrow","description":"bad movie","rating":"7.0","image":"michaeljackson.png"}' 

在这里,我们正在执行对 http://localhost:5000端点的POST请求。

我们在 —data 选项中设置了要发送到服务器的数据,即:

  1. '{"name":"Arrow","description":"bad movie","rating":"7.0","image":"michaeljackson.png”} 

在Node.js / Express.js中使用cURL

让我们看看如何设置Node.js / Express.js服务器并使用cURL测试端点:

  1. // server.js 
  2. const express = require("express") 
  3. const cors = require('cors') 
  4. const bodyParser = require('body-parser') 
  5. const helmet = require('helmet') 
  6. const app = express()let port = 5000 || process.env.PORT 
  7. app.use(cors())app.use(bodyParser.json({limit: '50mb'})) 
  8. app.use(helmet())let users = []let currId  Date.now()app.get("api/user/:id", (req, res, next) => { 
  9.   const userId = req.params.id  const usersusers = users.filter(user => user.id === userId)  if(users.length > 0) 
  10.     res.send({ user: users[0] }) 
  11.   else 
  12.     res.send({mesg: "No user found."}) 
  13.   next() 
  14. })app.get("api/users", (req, res, next) => { 
  15.   res.send({ users })  next() 
  16. })app.post("api/user", (req, res, next) => { 
  17.   let bdy = req.body  bdy = { id: ++currId, ...bdy }  users.push(bdy)  res.send({ user: bdy })  next()     
  18. })app.listen(port, () => {  console.log(`Server started at port: ${port}`); 
  19. }); 

我们在这里有一些小的API端点:

启动服务器:

  1. node server.js 
  2. Server started at port: 5000 

现在,要在 api/user 上执行POST请求,我们将 —url 设置为 http://localhost:5000/api/user,并将 --request 设置为POST,将 --header 设置为 content-type:application/json。

我们要添加用户:

  1. name: "Chidume", 
  2. age: 28 

因此数据将为 '{"name": "Chidume", "age": "28"}'

因此,cURL命令将是:

  1. curl --request POST \ 
  2.   --url http://localhost:5000/api/user \ 
  3.   --header 'content-type: application/json' \ 
  4.   --data '{"name": "Chidume", "age": "28"}' 
  5. { id: 5122435464, name: "Chidume", age: 28 } 

我们从服务器上看到了结果:将用户及其 id 添加到数据库中。

让我们添加另一个用户:

  1. curl --request POST \ 
  2.   --url http://localhost:5000/api/user \ 
  3.   --header 'content-type: application/json' \ 
  4.   --data '{"name": "Nnamdi", "age": "21"}' 
  5. { id: 5122435465, name: "Nnamdi", age: 21 } 

我们添加了另一个用户“Nnamdi”,我们可以看到服务器的 id 及其结果。

现在,让我们通过 api/user/:id 查询“ Chidume”。在这里 :id 将是 id 5122435464。因此cURL将是:

  1. curl --request GET \ 
  2.   --url http://localhost:5000/api/user/5122435464 
  3. { user: { id: 5122435464, name: "Chidume", age: 28 } } 

服务器的结果返回 id 为5122435464的用户,即“Chidume”。

现在让我们查询一个不存在的用户:

  1. curl --request GET \ 
  2.   --url http://localhost:5000/api/user/2000000000 
  3. { mesg: "No user found." } 

这是当我们遇到不存在的用户时服务器上返回的结果。

现在,让我们查询所有用户:

  1. curl --request GET \ 
  2.   --url http://localhost:5000/api/users 
  3. { users: [ { id: 5122435465, name: "Nnamdi", age: 21 }, { id: 5122435464, name: "Chidume", age: 28 } ] } 

如你所见,将返回服务器中的所有用户。

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯