自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

cURL簡介:高級程序員都在用的工具

開發(fā) 開發(fā)工具
在本文中,我們將介紹基本的cURL函數和選項。我們還將學習如何使用cURL在API端點上執(zhí)行GET,POST請求。

在本教程中,我們介紹cURL的基本選項,并通過示例介紹如何使用它們,然后我們開發(fā)了一個帶有三個端點的Node/Express服務器,以演示如何使用本文介紹的cURL選項對服務器執(zhí)行cURL的GET/POST請求。

與cURL一起使用的選項很多,我們在此介紹的是可用于快速測試API端點的基本選項。

[[345433]]

介紹

cURL是一種用于從服務器傳輸數據或向服務器傳輸數據的傳輸工具。它支持各種互聯網傳輸協議,包括:

  • DICT
  • FILE
  • FTP, FTPS
  • GOPHER
  • HTTP, HTTPS
  • IMAP, IMAPS
  • LDAP, LDAPS
  • POP3, POP3S
  • RTMP, RTSP
  • SCP, SFTP
  • SMB, SMBS
  • SMTP, SMTPS
  • TELNET and TFTP

我們可以使用cURL執(zhí)行一些有用的技巧,如代理支持、用戶身份驗證、FTP上傳、HTTP post、SSL連接、cookie、文件傳輸恢復、Metalink等等。

cURL是在命令行中使用的,在軟件開發(fā)過程中,它主要是用來快速測試API的。當我想在Node.js服務器中測試我所有的API時,我個人使用cURL。對于開發(fā)者來說,這是一個非常方便的工具。

 Postman很酷,但是cURL非常酷。

– Chidume Nnamdi

在本文中,我們將介紹基本的cURL函數和選項。我們還將學習如何使用cURL在API端點上執(zhí)行GET,POST請求。

cURL選項

(1) --request 或者 -X

—request 和 -X 指定與HTTP服務器通信時可以使用的自定義請求方法,將使用指定的請求方法代替其他方法(默認為GET)。

要執(zhí)行POST請求:

  1. curl --request POST 

要執(zhí)行GET請求:

  1. curl --request GET 

(2) --url

這指定了我們將獲取或傳輸數據的URL,當你想在配置文件中指定URL時,這個選項非常方便。

如果給定的URL缺少scheme name(例如“http://””或“ftp://””等),則cURL將基于主機進行猜測。

如果最外面的子域名與DICT,FTP,IMAP,LDAP,POP3或SMTP匹配,則將使用該協議。否則,將使用HTTP。

例如,如果你想在本地服務器上的 localhost:3000 上執(zhí)行GET請求,則需要將 --url 設置為 localhost:3000:

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

要在同一URL上執(zhí)行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

這個選項用于設置請求的頭信息。

當向服務器發(fā)送HTTP時,在請求中包含的額外頭。你可以指定任意數量的額外頭。請注意,如果你要添加一個自定義的頭文件,而這個頭文件的名字與 curl 內部使用的頭文件相同,那么你在外部設置的頭將被用來代替內部頭。

這反映了我們在正常編程中的做法,特別是在JavaScript中使用 XMLHttpRequest:

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

頭信息用于向Web服務器傳達傳入的數據類型,或期望的數據類型,發(fā)送的數據類型應與標頭中指定的類型相同。

我們可以使用頭文件來獲得CORS權限,甚至可以獲得某些類型的請求方法的權限。我們可以用頭文件做的事情有很多。

因此,在cURL中,我們可以使用 —header 選項設置標頭:

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

這里,我們正在向http://localhost:5000/api/user 端點發(fā)出 POST 請求,并通過 --header content-type: application/json’ 告訴服務器我們要發(fā)送的數據是 JSON 數據類型。

(4) --data 或者 -d

此選項用于將數據發(fā)送到HTTP服務器,這主要是在POST請求中使用,因為我們將數據發(fā)送到我們要添加到數據庫的服務器。因此,在cURL中,我們可以通過設置 —data 選項將數據指定為POST。

在POST請求中向HTTP服務器發(fā)送指定的數據,就像瀏覽器在用戶填寫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"}' 

在這里,我們正在執(zhí)行對 http://localhost:5000端點的POST請求。

我們在 —data 選項中設置了要發(fā)送到服務器的數據,即:

  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端點:

  • GEt api/users
  • GET api/user/:id
  • POST api/user它通過其 id 提取所有用戶(特定用戶),并可以添加新用戶。

啟動服務器:

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

現在,要在 api/user 上執(zhí)行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 } ] } 

如你所見,將返回服務器中的所有用戶。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2021-05-08 10:35:02

開發(fā)者技能工具

2025-01-21 07:48:28

2021-11-10 09:19:42

數據庫程序員性能

2020-12-16 11:03:59

IT程序員人工智能

2022-10-24 09:00:47

畫圖工具程序員XMind

2020-04-04 20:59:28

程序員技術開發(fā)

2025-02-28 07:40:49

C#代碼編程

2014-09-26 09:57:41

程序員讀書書籍

2020-05-08 15:41:08

程序員技術設計

2013-08-20 09:33:59

程序員

2015-01-14 10:17:28

高級程序員

2016-06-08 14:01:25

程序員軟技能

2011-05-13 14:34:02

程序員

2019-02-26 09:55:52

Java開發(fā)工具

2012-11-30 11:29:05

高級程序員程序員

2012-11-12 09:35:24

開發(fā)工具程序員IE6

2017-11-14 21:30:15

2012-11-22 14:00:26

程序員

2025-02-25 09:34:51

開源框架代碼
點贊
收藏

51CTO技術棧公眾號