- 浏览: 769692 次
- 性别:
- 来自: 南京
-
文章分类
- 全部博客 (663)
- Eclipse&MyEclipse (40)
- PHP (3)
- Java (72)
- CSS (3)
- MySQL (35)
- Oracle (68)
- Red Hat Linux (23)
- Tomcat (26)
- Oracle10gAS (1)
- Spring (28)
- MyBatis&iBatis (13)
- JS (47)
- JQuery (23)
- Editplus (2)
- 其他 (4)
- Html (15)
- SQL (5)
- Ant (2)
- Hadoop (2)
- Servlet (9)
- Windows (11)
- Flex (1)
- CentOS Linux (7)
- Microsoft SQL Server (2)
- DB2 (3)
- Mysql char 与 varchar 区别 (0)
- excel (5)
- jsp (8)
- FreeMarker (1)
- EasyUI (5)
- WebShpere MQ (1)
- Maven2 (6)
- 浏览器缓存 (2)
- visio (1)
- XML (2)
- 物联网 (1)
- Maven (3)
- JSTL (2)
- HTTP (1)
- Fourinone (1)
- IP知识 (1)
- MyBatis (1)
- 项目管理 (2)
- office2003+2007 (1)
- DOS (1)
- JProfiler (1)
- Thinpad T440p (1)
- ActiveMQ (10)
- MongoDB (5)
- Vert.x3 (1)
- Ngnix (3)
- Spark (2)
- BigData (1)
- 性能概念公式 (1)
- RocketMQ (3)
- IT名词术语 (1)
- Java编程工具 (1)
- RabbitMQ (2)
- MetaMQ (1)
- 架构 (6)
- KafkaMQ (7)
- Redis (4)
- OAuth (1)
- Gradle (1)
- CentOS (5)
- Microsoft_Toolkit (1)
- git (5)
- IntelliJ Idea (4)
- Nginx (3)
- docker (12)
- VMware (2)
- 算法 (1)
- JDBCPool (1)
- spring-cloud (7)
- netbean (1)
- 微信小程序 (2)
- CURL (2)
- Java生成二维码 (1)
- 区块链 (2)
- 机器学习 (1)
- SpringBoot (3)
- Android (9)
- 微服务架构 (1)
- Kubernetes (2)
- OpenProject (0)
- 测试 (1)
- https (1)
- 开源许可证 (1)
- ServiceMesh (2)
- NET (0)
- .NET (1)
- TEST (1)
- iOS (2)
- thymeleaf (4)
- lombok (1)
- 浏览器设置 (1)
- 富文本编辑器 (1)
- 搜索引擎 (1)
- IT常识 (1)
- UML (0)
- Axure (1)
- appstore无法联网 (0)
- apk无法安装 (1)
- SQLServer (2)
- 卸载弹窗软件 (1)
- jenkins (1)
- TortoiseGit (1)
- eureka (1)
- ajax (1)
- spyder (0)
最新评论
curl 指令 rest
cURL 是很方便的Rest客戶端,可以很方便的完成許多Rest API測試的需求,甚至,如果是需要先登入或認證的rest api,也可以進行測試,利用curl指令,可以送出HTTP GET, POST, PUT, DELETE, 也可以改變 HTTP header來滿足使用REST API需要的特定條件。
curl的參數很多,這邊僅列出目前測試REST時常用到的:
-X/--request [GET|POST|PUT|DELETE|…] 使用指定的http method發出 http request
-H/--header 設定request裡的header
-i/--include 顯示response的header
-d/--data 設定 http parameters
-v/--verbose 輸出比較多的訊息
-u/--user 使用者帳號、密碼
-b/--cookie cookie
linux command line 的參數常,同一個功能常會有兩個功能完全相同參數,一個是比較短的參數,前面通常是用-(一個-)導引符號,另一個比較長的參數,通常會用--(兩個-)導引符號
在curl 使用說明
-X, --request COMMAND Specify request command to use
--resolve HOST:PORT:ADDRESS Force resolve of HOST:PORT to ADDRESS
--retry NUM Retry request NUM times if transient problems occur
--retry-delay SECONDS When retrying, wait this many seconds between each
--retry-max-time SECONDS Retry only within this period>
參數-X跟--request兩個功能是一樣的,所以使用時 ex:curl -X POST http://www.example.com/ 跟 curl --request POST http://www.example.com/ 是相等的功能
GET/POST/PUT/DELETE使用方式
-X 後面加 http method,
curl -X GET "http://www.rest.com/api/users"
curl -X POST "http://www.rest.com/api/users"
curl -X PUT "http://www.rest.com/api/users"
curl -X DELETE "http://www.rest.com/api/users"
url要加引號也可以,不加引號也可以,如果有非純英文字或數字外的字元,不加引號可能會有問題,如果是網碼過的url,也要加上引號
HEADER
在http header加入的訊息
curl -v -i -H "Content-Type: application/json" http://www.example.com/users
HTTP Parameter
http參數可以直接加在url的query string,也可以用-d帶入參數間用&串接,或使用多個-d
# 使用`&`串接多個參數
curl -X POST -d "param1=value1¶m2=value2"
# 也可使用多個`-d`,效果同上
curl -X POST -d "param1=value1" -d "param2=value2"
curl -X POST -d "param1=a 0space"
# "a space" url encode後空白字元會編碼成'%20'為"a%20space",編碼後的參數可以直接使用
curl -X POST -d "param1=a%20space"
post json 格式得資料
如同時需要傳送request parameter跟json,request parameter可以加在url後面,json資料則放入-d的參數,然後利用單引號將json資料含起來(如果json內容是用單引號,-d的參數則改用雙引號包覆),header要加入”Content-Type:application/json”跟”Accept:application/json”
curl http://www.example.com?modifier=kent -X PUT -i -H "Content-Type:application/json" -H "Accept:application/json" -d '{"boolean" : false, "foo" : "bar"}'
# 不加"Accept:application/json"也可以
curl http://www.example.com?modifier=kent -X PUT -i -H "Content-Type:application/json" -d '{"boolean" : false, "foo" : "bar"}'
需先認證或登入才能使用的service
許多服務,需先進行登入或認證後,才能存取其API服務,依服務要求的條件,的curl可以透過cookie,session或加入在header加入session key,api key或認證的token來達到認證的效果。
session 例子:
後端如果是用session記錄使用者登入資訊,後端會傳一個 session id給前端,前端需要在每次跟後端的requests的header中置入此session id,後端便會以此session id識別前端是屬於那個session,以達到session的效果
curl --request GET 'http://www.rest.com/api/users' --header 'sessionid:1234567890987654321'
cookie 例子
如果是使用cookie,在認證後,後端會回一個cookie回來,把該cookie成檔案,當要存取需要任務的url時,再用-b cookie_file 的方式在request中植入cookie即可正常使用
# 將cookie存檔
curl -i -X POST -d username=kent -d password=kent123 -c ~/cookie.txt http://www.rest.com/auth
# 載入cookie到request中
curl -i --header "Accept:application/json" -X GET -b ~/cookie.txt http://www.rest.com/users/1
檔案上傳
curl -i -X POST -F 'file=@/Users/kent/my_file.txt' -F 'name=a_file_name'
這個是透過 HTTP multipart POST 上傳資料, -F 是使用http query parameter的方式,指定檔案位置的參數要加上@
HTTP Basic Authentication (HTTP基本認證)
如果網站是採HTTP基本認證, 可以使用 --user username:password 登入
curl -i --user kent:secret http://www.rest.com/api/foo'
認證失敗時,會是401 Unauthorized
HTTP/1.1 401 Unauthorized
Server: Apache-Coyote/1.1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
WWW-Authenticate: Basic realm="Realm"
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 1022
Date: Thu, 15 May 2014 06:32:49 GMT
認證通過時,會回應 200 OK
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Set-Cookie: JSESSIONID=A75066DCC816CE31D8F69255DEB6C30B; Path=/mdserver/; HttpOnly
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 15 May 2014 06:14:11 GMT
可以把認證後的cookie存起來,重複使用
curl -i --user kent:secret http://www.rest.com/api/foo' -c ~/cookies.txt
登入之前暫存的cookies,可以不用每次都認證
curl -i http://www.rest.com/api/foo' -b ~/cookies.txt
相關資源
http://linux.about.com/od/commands/l/blcmdl1_curl.htm - curl 手冊
cURL 是很方便的Rest客戶端,可以很方便的完成許多Rest API測試的需求,甚至,如果是需要先登入或認證的rest api,也可以進行測試,利用curl指令,可以送出HTTP GET, POST, PUT, DELETE, 也可以改變 HTTP header來滿足使用REST API需要的特定條件。
curl的參數很多,這邊僅列出目前測試REST時常用到的:
-X/--request [GET|POST|PUT|DELETE|…] 使用指定的http method發出 http request
-H/--header 設定request裡的header
-i/--include 顯示response的header
-d/--data 設定 http parameters
-v/--verbose 輸出比較多的訊息
-u/--user 使用者帳號、密碼
-b/--cookie cookie
linux command line 的參數常,同一個功能常會有兩個功能完全相同參數,一個是比較短的參數,前面通常是用-(一個-)導引符號,另一個比較長的參數,通常會用--(兩個-)導引符號
在curl 使用說明
-X, --request COMMAND Specify request command to use
--resolve HOST:PORT:ADDRESS Force resolve of HOST:PORT to ADDRESS
--retry NUM Retry request NUM times if transient problems occur
--retry-delay SECONDS When retrying, wait this many seconds between each
--retry-max-time SECONDS Retry only within this period>
參數-X跟--request兩個功能是一樣的,所以使用時 ex:curl -X POST http://www.example.com/ 跟 curl --request POST http://www.example.com/ 是相等的功能
GET/POST/PUT/DELETE使用方式
-X 後面加 http method,
curl -X GET "http://www.rest.com/api/users"
curl -X POST "http://www.rest.com/api/users"
curl -X PUT "http://www.rest.com/api/users"
curl -X DELETE "http://www.rest.com/api/users"
url要加引號也可以,不加引號也可以,如果有非純英文字或數字外的字元,不加引號可能會有問題,如果是網碼過的url,也要加上引號
HEADER
在http header加入的訊息
curl -v -i -H "Content-Type: application/json" http://www.example.com/users
HTTP Parameter
http參數可以直接加在url的query string,也可以用-d帶入參數間用&串接,或使用多個-d
# 使用`&`串接多個參數
curl -X POST -d "param1=value1¶m2=value2"
# 也可使用多個`-d`,效果同上
curl -X POST -d "param1=value1" -d "param2=value2"
curl -X POST -d "param1=a 0space"
# "a space" url encode後空白字元會編碼成'%20'為"a%20space",編碼後的參數可以直接使用
curl -X POST -d "param1=a%20space"
post json 格式得資料
如同時需要傳送request parameter跟json,request parameter可以加在url後面,json資料則放入-d的參數,然後利用單引號將json資料含起來(如果json內容是用單引號,-d的參數則改用雙引號包覆),header要加入”Content-Type:application/json”跟”Accept:application/json”
curl http://www.example.com?modifier=kent -X PUT -i -H "Content-Type:application/json" -H "Accept:application/json" -d '{"boolean" : false, "foo" : "bar"}'
# 不加"Accept:application/json"也可以
curl http://www.example.com?modifier=kent -X PUT -i -H "Content-Type:application/json" -d '{"boolean" : false, "foo" : "bar"}'
需先認證或登入才能使用的service
許多服務,需先進行登入或認證後,才能存取其API服務,依服務要求的條件,的curl可以透過cookie,session或加入在header加入session key,api key或認證的token來達到認證的效果。
session 例子:
後端如果是用session記錄使用者登入資訊,後端會傳一個 session id給前端,前端需要在每次跟後端的requests的header中置入此session id,後端便會以此session id識別前端是屬於那個session,以達到session的效果
curl --request GET 'http://www.rest.com/api/users' --header 'sessionid:1234567890987654321'
cookie 例子
如果是使用cookie,在認證後,後端會回一個cookie回來,把該cookie成檔案,當要存取需要任務的url時,再用-b cookie_file 的方式在request中植入cookie即可正常使用
# 將cookie存檔
curl -i -X POST -d username=kent -d password=kent123 -c ~/cookie.txt http://www.rest.com/auth
# 載入cookie到request中
curl -i --header "Accept:application/json" -X GET -b ~/cookie.txt http://www.rest.com/users/1
檔案上傳
curl -i -X POST -F 'file=@/Users/kent/my_file.txt' -F 'name=a_file_name'
這個是透過 HTTP multipart POST 上傳資料, -F 是使用http query parameter的方式,指定檔案位置的參數要加上@
HTTP Basic Authentication (HTTP基本認證)
如果網站是採HTTP基本認證, 可以使用 --user username:password 登入
curl -i --user kent:secret http://www.rest.com/api/foo'
認證失敗時,會是401 Unauthorized
HTTP/1.1 401 Unauthorized
Server: Apache-Coyote/1.1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
WWW-Authenticate: Basic realm="Realm"
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 1022
Date: Thu, 15 May 2014 06:32:49 GMT
認證通過時,會回應 200 OK
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Set-Cookie: JSESSIONID=A75066DCC816CE31D8F69255DEB6C30B; Path=/mdserver/; HttpOnly
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 15 May 2014 06:14:11 GMT
可以把認證後的cookie存起來,重複使用
curl -i --user kent:secret http://www.rest.com/api/foo' -c ~/cookies.txt
登入之前暫存的cookies,可以不用每次都認證
curl -i http://www.rest.com/api/foo' -b ~/cookies.txt
相關資源
http://linux.about.com/od/commands/l/blcmdl1_curl.htm - curl 手冊
发表评论
-
CentOS系统中常用查看系统信息和日志命令小结(转)
2018-04-13 15:27 499转载:http://www.3lian.com/edu/ ... -
实现虚拟机VMware上linux与windows互相复制与粘贴(转)
2016-12-26 19:23 2267解决问题:实现虚拟机VMware上Linux与windows ... -
linux curl命令详解及实例分享(转)
2016-10-01 12:07 672linux curl是一个利用URL规则在命令行下工作的文件 ... -
CentOS 版本选择:DVD、Everything、LiveCD、Minimal、NetInstall(转)
2016-03-31 14:55 13186CentOS 7.1,主要是下载的时候有很多版本供选择,如何 ...
相关推荐
通过配置网络设置、选择数据源、设置安全选项,以及使用 curl 工具进行测试,可以实现 IoT 设备与云端或企业系统的无缝集成。这为 IoT 应用场景提供了强大支持,无论是在自动化、监控还是数据分析等领域。
5. **测试和调试**:使用curl命令行工具、Postman等可以方便地测试REST接口,同时也可以编写单元测试确保服务的正确性。 文件名"REST-Service-master"可能是一个Git仓库的主分支,意味着这个项目是开源的,包含了...
贝云校园管理系统(pc 微信 服务窗),基于thinkphp5.0.11,包含文章,图片,下载,视频,学生,专业模型,旨在帮助开发者节约web应用后台开发时间和精力,以最快的速度开发出高质量的web应用。 贝云校园管理系统主要...
### Appium iOS自动化测试环境搭建(Mac真机) #### Appium概述 Appium是一款由Sauce Labs维护和支持的开源自动化测试框架,适用于多种操作系统,包括iOS、Android以及Firefox OS等。该工具允许开发者针对原生应用...
REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,常用于构建Web服务。通过HTTP协议,REST API提供了GET、POST、PUT、DELETE等操作,便于客户端与服务器之间进行数据交换。 在项目...
3. **RESTful API**:如果httmanbot1与API测试相关,那么REST(Representational State Transfer)原则是一个重要的概念。RESTful API设计风格使服务端接口更加简洁和统一,通常使用HTTP方法来表示资源的操作。 4. ...
基于tp5.1,遵循PSR-2、PSR-4规范,Composer及单元测试,异常严谨的错误检测和安全机制,详细的日志信息,为你的开发保驾护航;减少核心依赖,扩展更灵活、方便,支持命令行指令扩展;出色的性能和REST支持、远程...