Linux - curl 基本使用

1. 概述

  1. 我接触过的很多服务端调试, 接口测试, 最终都落到了这个地方

  2. 简答介绍 curl 的使用

    1. 尽量循序渐进, 因为我也不太熟悉
  3. 大概会提到的命令

    1. curl
    2. curl -v
    3. curl -s
    4. curl -i
    5. curl -X
    6. curl -H
    7. curl -d

2. curl

  1. CommandLine Uniform Resource Locator
  2. 官网
    https://curl.haxx.se/
    
  3. 特性
    1. 这个就不多说
    2. 毕竟它在我手上, 也只是一个简单的 命令行 工具

3. 命令

  1. 帮助

    # 这个命令如果能运行, 说明 机器上确实有 curl
    # 具体内容不少, 建议在对 curl 有一定认知之后, 再去尝试阅读
    > curl --help
    
  2. 简单模式 与 繁琐模式

    1. 简单模式

      1. 命令

        # curl 访问 url 的时候, 建议带上协议
        # 如果不带的话, 默认是 http
        > curl 'http://www.baidu.com'
        
      2. 结果

        1. 返回

          # 勉强对齐了一下
          # 结果类似一个表格, 前两行是表头, 最后一行, 是结果
            % Total    % Received % Xferd  Average Speed   Time    Time   Time  Current
                                           Dload  Upload   Total   Spent    Left  Speed
          100  2381  100  2381    0     0  50659      0 --:--:-- --:--:-- --:--:-- 50659
          # 后面是 baidu 的html, 就不列举了
          
        2. 不好意思, 这个统计信息, 留个坑吧

          1. 如果不想要这个统计信息, 可以使用 以下命令

            > curl -s 'http://www.baidu.com'
            
    2. 繁琐模式

      1. 命令

        > curl -v 'http://www.baidu.com'
        
      2. 结果

        1. 返回

           % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                           Dload  Upload   Total   Spent    Left  Speed
            0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 61.135.169.121...
          * TCP_NODELAY set
          * Connected to www.baidu.com (61.135.169.121) port 80 (#0)
          
          # 这一部分, 是 请求
          > GET / HTTP/1.1
          > Host: www.baidu.com
          > User-Agent: curl/7.63.0
          > Accept: */*
          >
          
          # 这一部分, 是响应
          < HTTP/1.1 200 OK
          < Accept-Ranges: bytes
          < Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
          < Connection: Keep-Alive
          < Content-Length: 2381
          < Content-Type: text/html
          < Date: Fri, 16 Aug 2019 12:48:41 GMT
          < Etag: "588604c4-94d"
          < Last-Modified: Mon, 23 Jan 2017 13:27:32 GMT
          < Pragma: no-cache
          < Server: bfe/1.0.8.18
          < Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
          <
          { [2381 bytes data]
          100  2381  100  2381    0     0  74406      0 --:--:-- --:--:-- --:--:-- 74406
          
          # 这一行, 是请求页面的内容, 略
          
          # 这一行是啥, 我也不太清楚了
          * Connection #0 to host www.baidu.com left intact
          
          
        2. 如果你只关心 返回

          1. 则可以使用以下命令

            > curl -i 'http://www.baidu.com'
            
  3. 请求方式

    1. 命令

      > curl -vs -X GET 'http://www.baidu.com'
      
    2. 结果

      1. 和 繁琐模式 基本一致
      2. 默认的请求方法, 是 GET
      3. GET 可以换成其他的方法
  4. 请求头

    1. 命令

      > curl -is -X GET -H 'Content-Type: text/html' 'http://www.baidu.com'
      
  5. 请求体

    1. 命令

      > curl -vs -X GET -H 'Content-Type: text/html' -d '{"key": "value"}' 'http://www.baidu.com'
      

4. 最后

  1. 感觉讲得不太好

    1. 其实这些命令, 可以一笔带过

      1. 基本就是请求, 看request, 看response, 定请求方式, 设置 request header, 设置 request body
    2. 相关的东西, 想讲讲又不知道怎么开始

      1. http 相关
      2. curl 结果
        1. 那个统计
        2. 比如 verbose 模式下的连接过程
    3. 这玩意其实可以用的地方有很多

      1. 有机会, 会尝试做些其他的讲解.
  2. ref

    1. curl使用指南
    2. 官网上有本书, 叫做 everything-curl, 写的很详细, 但都是英文.
posted @ 2019-08-16 21:52  轩辕拾銉  阅读(229)  评论(0编辑  收藏  举报