在本教程中,我们介绍了cURL的基本选项并通过示例展示了如何使用它们,然后我们开发了一个具有三个端点的Node/Express服务器来演示如何执行一个使用本文中描述的cURL选项向服务器发送cURLGET/POST请求。与cURL一起使用有很多选项,我们在这里介绍的是可用于快速测试API端点的基本选项。简介cURL是一种用于从服务器传输数据或向服务器传输数据的传输工具。它支持各种Internet传输协议,包括:DICTFILEFTP、FTPSGOPHERHTTP、HTTPSIMAP、IMAPSLDAP、LDAPSPOP3、POP3SRTMP、RTSPSCP、SFTPSMB、SMBSSMTP、SMTPSTELNET和TFTP我们可以使用cURL执行一些有用的技巧例如代理支持、用户身份验证、FTP上传、HTTPpost、SSL连接、cookie、文件传输恢复、Metalink等。cURL在命令行中使用,主要用于软件开发过程中API的快速测试。当我想在Node.js服务器中测试我的所有API时,我个人会使用cURL。对于开发人员来说,这是一个非常方便的工具。Postman很酷,但cURL也很酷。–ChidumeNnamdi在本文中,我们将介绍基本的cURL功能和选项。我们还将学习如何使用cURL在API端点上执行GET、POST请求。cURLoptions(1)--requestor-X——request和-X指定一个自定义的请求方法,可以在与HTTP服务器通信时使用,指定的请求方法将被使用,而不是其他方法(默认是GET)。执行POST请求:curl--requestPOST执行GET请求:curl--requestGET(2)--url这指定了我们将获取或传输数据的URL,当您想指定URL时,此选项非常有用在配置文件方便。如果给定的URL缺少方案名称(例如“http://”或“ftp://”等),cURL将根据主机进行猜测。如果最外层的子域与DICT、FTP、IMAP、LDAP、POP3或SMTP匹配,则将使用该协议。否则,将使用HTTP。例如,如果要在本地服务器上对localhost:3000执行GET请求,则需要将--url设置为localhost:3000:curl--requestGET\--urlhttp://localhost:3000执行相同的URLPOST:curl--requestPOST\--urlhttp://localhost:3000注意:反斜杠\用于分隔cURL中的选项。对于外部API,它仍然是相同的。假设您想从https://moviesdb.com/movies/all获取电影列表。curl--requestGET\--urlhttps://moviesdb.com/movies/allmoviedb将获取并打印所有电影的列表。(3)--header或-H该选项用于设置请求的头部信息。向服务器发送HTTP时要包含在请求中的额外标头。您可以指定任意数量的附加标头。请注意,如果您添加的自定义标头与curl内部使用的标头同名,则将使用您在外部设置的标头而不是内部标头。这反映了我们在正常编程中所做的事情,尤其是JavaScript中的XMLHttpRequest:constxhttp=newXMLHttpRequest()xhttp.setHeader("Content-Type","application/json")头信息用于传递传入的数据类型,或预期的数据类型,发送的数据类型应与标头中指定的类型相同。我们可以使用标头来获得CORS权限,甚至某些类型的请求方法。我们可以用头文件做很多事情。因此,在cURL中,我们可以使用--header选项设置标头:curl--requestPOST\--urlhttp://localhost:5000/api/user\--header'content-type:application/json'这里,我们我们正在向http://localhost:5000/api/user端点发出POST请求,并传递--headercontent-type:application/json'告诉服务器我们发送的数据是JSON数据类型.(4)--dataor-d该选项用于向HTTP服务器发送数据,这个主要用在POST请求中,因为我们向服务器发送数据是我们要添加到数据库中的。因此,在cURL中,我们可以通过设置--data选项来指定要POST的数据。在POST请求中将指定的数据发送到HTTP服务器,就像浏览器在用户填写HTML表单并按下提交按钮时所做的那样。这是一个示例:curl--requestPOST\--urlhttp://localhost:5000\--header'content-type:application/json'\--data'{"name":"Arrow","description":"badmovie","rating":"7.0","image":"michaeljackson.png"}'这里我们对http://localhost:5000端点执行POST请求。我们在--data选项中设置要发送给服务器的数据,即:'{"name":"Arrow","description":"badmovie","rating":"7.0","image":"michaeljackson.png"}在Node.js/Express.js中使用cURL让我们看看如何设置Node.js/Express.js服务器并使用cURL测试端点://server.jsconstexpress=require("express")constcors=require('cors')constbodyParser=require('body-parser')consthelmet=require('helmet')constapp=express()letport=5000||process.env.PORT/**设置中间件*/app.use(cors())app.use(bodyParser.json({limit:'50mb'}))app.use(helmet())letusers=[]letcurrIdDate.now()app.get("api/user/:id",(req,res,next)=>{constuserId=req.params.idconstusersusers=users.filter(user=>user.id===userId)if(users.length>0)res.send({user:用户[0]})elsees.send({mesg:"Nouserfound."})next()})app.get("api/users",(req,res,next)=>{res.send({users})next()})app.post("api/user",(req,res,next)=>{letbdy=req.bodybdy={id:++currId,...bdy}users.push(bdy)res.send({user:bdy})next()})/**启动服务器*/app.listen(port,()=>{console.log(`Serverstartedatport:${port}`);});我们这里有一些小的API端点:GEtapi/usersGETapi/user/:idPOSTapi/user它通过他们的id(特定用户)获取所有用户,并且可以添加一个新用户来启动服务器:nodeserver.jsServerstartedatport:5000现在,要对api/user执行POST请求,我们将--url设置为http://localhost:5000/api/user并将--request设置为POST,将--header设置为content-type:application/json。我们要添加用户:name:"Chidume",age:28因此数据将为'{"name":"Chidume","age":"28"}'因此cURL命令将为:curl--requestPOST\--urlhttp://localhost:5000/api/user\--header'content-type:application/json'\--data'{"name":"Chidume","age":"28"}'{id:5122435464,name:"Chidume",age:28}我们从服务器看到结果:用户和他的id被添加到数据库中。让我们添加另一个用户:curl--requestPOST\--urlhttp://localhost:5000/api/user\--header'content-type:application/json'\--data'{"name":"Nnamdi","age":"21"}'{id:5122435465,name:"Nnamdi",age:21}我们添加了另一个用户“Nnamdi”,我们可以看到服务器的id及其结果。现在,让我们通过api/user/:id查询“Chidume”。这里:id将是id5122435464。因此cURL将是:curl--requestGET\--urlhttp://localhost:5000/api/user/5122435464{user:{id:5122435464,name:"Chidume",age:28}}服务器返回的结果是id为5122435464的用户,即“Chidume”。现在让我们查询一个不存在的用户:curl--requestGET\--urlhttp://localhost:5000/api/user/2000000000{mesg:"Nouserfound."}这是当我们遇到一个不存在的用户服务器时上面返回的结果。现在,让我们查询所有用户:curl--requestGET\--urlhttp://localhost:5000/api/users{users:[{id:5122435465,name:"Nnamdi",age:21},{id:5122435464,name:"Chidume",age:28}]}如您所见,将返回服务器中的所有用户。
