通过yaml文件发起http请求

yurl

github

名称的含义: yaml url.

这是一个用来学习rust语言的小工程.

它的主要功能是通过yaml文件发起http请求.

用法

yaml文件示例:

vars:
  name: tom
  prefix: http://127.0.0.1:8000
requests:
  - order: 1
    name: post-form
    url: ${var.prefix}/post/form
    method: POST
    headers:
    params:
      name: post-form
    content_type: FORM
    response_type: JSON
  - order: 3
    name: post-json
    url: ${var.prefix}/post/json
    method: POST
    headers:
    params:
      name: ${res.post-form.code}
    content_type: JSON
    response_type: JSON
  - order: 6
    name: post-url
    url: ${var.prefix}/post/url
    method: POST
    headers:
    params:
      name: ${fun.datetime}
    content_type: URLENCODED
    response_type: JSON
  - order: 2
    name: get-url
    url: ${var.prefix}/get/url
    method: GET
    headers:
    params:
      name: get-url
    content_type: URLENCODED
    response_type: JSON
  - order: 5
    name: get-form
    url: ${var.prefix}/get/form
    method: GET
    headers:
    params:
      name: get-form
    content_type: FORM
    response_type: JSON
  - order: 8
    name: get-json
    url: ${var.prefix}/get/json
    method: GET
    headers:
    params:
      name: get-json
    content_type: JSON
    response_type: JSON
  - order: 7
    name: put-form
    url: ${var.prefix}/put/form
    method: PUT
    headers:
    params:
      name: put-form
    content_type: FORM
    response_type: JSON
  - order: 22
    name: put-json
    url: ${var.prefix}/put/json
    method: PUT
    headers:
    params:
      name: put-json
    content_type: JSON
    response_type: JSON
  - order: 13
    name: put-url
    url: ${var.prefix}/put/url
    method: PUT
    headers:
    params:
      name: put-url
    content_type: URLENCODED
    response_type: JSON
  - order: 17
    name: delete-form
    url: ${var.prefix}/delete/form
    method: DELETE
    headers:
    params:
      name: delete-form
    content_type: FORM
    response_type: JSON
  - order: 16
    name: delete-json
    url: ${var.prefix}/delete/json
    method: DELETE
    headers:
    params:
      name: delete-json
    content_type: JSON
    response_type: JSON
  - order: 0
    name: delete-url
    url: ${var.prefix}/delete/url
    method: DELETE
    headers:
    params:
      name: ${fun.uuid}
    content_type: URLENCODED
    response_type: JSON

命令

run

运行相关命令。

yurl run -f ./test.yaml -p

# run :运行子命令
# --file | -f :指定文件路径
# --pretty | -p : 漂亮的输出

# ╭───────┬─────────────┬────────┬───────────────────────────────────┬─────────────────────────────────┬─────────┬────────────────────────────────────────────────────────────────────────╮
# │ order │ name        │ method │ url                               │ params                          │ headers │ response                                                               │
# ├───────┼─────────────┼────────┼───────────────────────────────────┼─────────────────────────────────┼─────────┼────────────────────────────────────────────────────────────────────────┤
# │ 0     │ delete-url  │ DELETE │ http://127.0.0.1:8000/delete/url  │ {"name": "${fun.uuid}"}         │ {}      │ {"code":200,"message":"success","data":{"name":"${fun.uuid}"}}         │
# │ 1     │ post-form   │ POST   │ http://127.0.0.1:8000/post/form   │ {"name": "post-form"}           │ {}      │ {"code":200,"message":"success","data":{"name":"post-form"}}           │
# │ 2     │ get-url     │ GET    │ http://127.0.0.1:8000/get/url     │ {"name": "get-url"}             │ {}      │ {"code":200,"message":"success","data":{"name":"get-url"}}             │
# │ 3     │ post-json   │ POST   │ http://127.0.0.1:8000/post/json   │ {"name": "200"}                 │ {}      │ {"code":200,"message":"success","data":{"name":"200"}}                 │
# │ 5     │ get-form    │ GET    │ http://127.0.0.1:8000/get/form    │ {"name": "get-form"}            │ {}      │ {"code":200,"message":"success","data":{"name":"get-form"}}            │
# │ 6     │ post-url    │ POST   │ http://127.0.0.1:8000/post/url    │ {"name": "2024-06-14 21:41:22"} │ {}      │ {"code":200,"message":"success","data":{"name":"2024-06-14 21:41:22"}} │
# │ 7     │ put-form    │ PUT    │ http://127.0.0.1:8000/put/form    │ {"name": "put-form"}            │ {}      │ {"code":200,"message":"success","data":{"name":"put-form"}}            │
# │ 8     │ get-json    │ GET    │ http://127.0.0.1:8000/get/json    │ {"name": "get-json"}            │ {}      │ {"code":200,"message":"success","data":{"name":"get-json"}}            │
# │ 13    │ put-url     │ PUT    │ http://127.0.0.1:8000/put/url     │ {"name": "put-url"}             │ {}      │ {"code":200,"message":"success","data":{"name":"put-url"}}             │
# │ 16    │ delete-json │ DELETE │ http://127.0.0.1:8000/delete/json │ {"name": "delete-json"}         │ {}      │ {"code":200,"message":"success","data":{"name":"delete-json"}}         │
# │ 17    │ delete-form │ DELETE │ http://127.0.0.1:8000/delete/form │ {"name": "delete-form"}         │ {}      │ {"code":200,"message":"success","data":{"name":"delete-form"}}         │
# │ 22    │ put-json    │ PUT    │ http://127.0.0.1:8000/put/json    │ {"name": "put-json"}            │ {}      │ {"code":200,"message":"success","data":{"name":"put-json"}}            │
# ╰───────┴─────────────┴────────┴───────────────────────────────────┴─────────────────────────────────┴─────────┴────────────────────────────────────────────────────────────────────────╯

function

函数相关命令。

列出所有函数
yurl function list

# or
# yurl --fun -l
# function | --fun :函数子命令
# list | -l :列出所有函数

# ╭──────────────────┬───────────────────────────────┬─────────────────────╮
# │ key              │ about                         │ result              │
# ├──────────────────┼───────────────────────────────┼─────────────────────┤
# │ date             │ get current date.             │ 2024-06-14          │
# │ date_max         │ get current date max time.    │ 2024-06-14 23:59:59 │
# │ date_min         │ get current date min time.    │ 2024-06-14 00:00:00 │
# │ datetime         │ get current datetime.         │ 2024-06-14 21:46:18 │
# │ time             │ get current time.             │ 21:46:18            │
# │ timestamp        │ get current timestamp.        │ 1718372778          │
# │ timestamp_millis │ get current timestamp millis. │ 1718372778422       │
# ╰──────────────────┴───────────────────────────────┴─────────────────────╯
调用一个函数
yurl --fun -c -k date
# or
# yurl function call --key date
# function | --fun :函数子命令
# call | -c :调用一个函数
# --key | -k :函数的key

# 2024-06-14
查询函数
yurl --fun -s -k date
# or
# yurl function search --key date
# function | --fun :函数子命令
# search | -s :查询函数
# --key | -k :函数的key(模糊查询)

# ╭──────────┬────────────────────────────┬─────────────────────╮
# │ key      │ about                      │ result              │
# ├──────────┼────────────────────────────┼─────────────────────┤
# │ date     │ get current date.          │ 2024-06-14          │
# │ date_max │ get current date max time. │ 2024-06-14 23:59:59 │
# │ date_min │ get current date min time. │ 2024-06-14 00:00:00 │
# │ datetime │ get current datetime.      │ 2024-06-14 21:54:07 │
# ╰──────────┴────────────────────────────┴─────────────────────╯

generate

生成相关命令。

yurl generate -o template.yaml
# or
# yurl --gen --out template.yaml

# please view template.yaml

template.yaml:

# variable, use ${var.name} can obtain.
vars:
  name: tom
  host: 127.0.0.1
# request list
requests:
  # request execution order
  - order: 2
    # request name
    name: hello
    # request url, can use expression, example: http://${var.host}:8080/hello
    url: http://127.0.0.1:8080/hello
    # request method: GET | POST | PUT | DELETE
    method: POST
    # request headers, can use expression.
    headers:
      tenant-id: 10000
      # get variable value expression.
      name: ${var.name}
      # get function value expression, function list can be viewed through [yurl function list].
      uuid: ${fun.uuid}
      # get response value expression, only when the dependent request response_type=JSON.
      # expression describe: ${res.    hello.                             token}
      #                        fixed   dependent request the name         dependent request the response json path
      token: ${res.hello.token}
    # request params, can use expression.
    params:
      name: ${var.name}
      id: ${fun.uuid}
    # request ContentType: URLENCODED | FORM | JSON | FILE
    content_type: JSON
    # response data type: TEXT | JSON | HTML | FILE
    response_type: JSON
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值