axenov/pm-convert

Postman 集合转换器

v1.6.1 2024-07-07 16:15 UTC

This package is auto-updated.

Last update: 2024-09-09 06:06:47 UTC


README

将 Postman 集合转换为不同的格式。

非常快。
离线。
无第三方依赖。

目前支持的格式有: httpcurlwget

这个项目是在我的业余时间开始和快速编写的,为了解决一个 NDA 项目中的一个问题,因此它可能包含愚蠢的错误,并且(肯定)没有覆盖根据集合模式的所有可能情况。请随时提出您的改进意见。

不支持比最新版本更早的版本,只支持当前版本。如果您在旧版本中发现了错误,请确保您发现的错误已经在最新版本中修复。因此,请始终使用 pm-convert 的最新版本。

支持的功能

  • 集合模式 v2.1v2.0
  • 用存储在集合和环境文件中的变量替换请求中的变量;
  • 将一个或多个集合(甚至整个目录)导出为支持的一种或所有格式;
  • 所有头部(包括禁用 http 格式);
  • json 主体(强制头部 Content-Typeapplication/json);
  • formdata 主体(包括禁用 http 格式的字段;强制头部 Content-Typemultipart/form-data

计划中的功能

  • 尽可能多地支持所需的身份验证类型(目前仅支持 Bearer);
  • 尽可能多地支持所需的主体格式(目前仅支持 jsonformdata);
  • 支持(以 markdown 格式)生成文档,并带有响应示例(如果有)(#6);
  • 可能还有其他转换格式(如 httpie 或类似的东西);
  • 更好的日志记录;
  • 90%+ 测试覆盖率,phpcs,psalm 等;
  • 网络版本。

安装和升级

composer global r axenov/pm-convert   # install
composer global u axenov/pm-convert   # upgrade

确保您的 ~/.config/composer/vendor/bin$PATH 环境中

echo $PATH | grep --color=auto 'composer'
# if not then execute this command and add it into ~/.profile:
export PATH="$PATH:~/.config/composer/vendor/bin"

用法

$ pm-convert --help
Postman collection converter
Usage:
        ./pm-convert -f|-d PATH -o OUTPUT_PATH [ARGUMENTS] [FORMATS]
        php pm-convert -f|-d PATH -o OUTPUT_PATH [ARGUMENTS] [FORMATS]
        composer pm-convert -f|-d PATH -o OUTPUT_PATH [ARGUMENTS] [FORMATS]
        ./vendor/bin/pm-convert -f|-d PATH -o OUTPUT_PATH [ARGUMENTS] [FORMATS]

Possible ARGUMENTS:
        -f, --file          - a PATH to a single collection file to convert from
        -d, --dir           - a PATH to a directory with collections to convert from
        -o, --output        - a directory OUTPUT_PATH to put results in
        -e, --env           - use environment file with variables to replace in requests
        --var "NAME=VALUE"  - force replace specified env variable called NAME with custom VALUE
        -p, --preserve      - do not delete OUTPUT_PATH (if exists)
            --dump          - convert provided arguments into settings file in `pwd`
        -h, --help          - show this help message and exit
        -v, --version       - show version info and exit

If no ARGUMENTS passed then --help implied.
If both -f and -d are specified then only unique set of files from both arguments will be converted.
-f or -d are required to be specified at least once, but each may be specified multiple times.
PATH must be a valid path to readable json-file or directory.
OUTPUT_PATH must be a valid path to writeable directory.
If -o or -e was specified several times then only last one will be used.

Possible FORMATS:
        --http     - generate raw *.http files (default)
        --curl     - generate shell scripts with curl command
        --wget     - generate shell scripts with wget command
        --v2.0     - convert from Postman Collection Schema v2.1 into v2.0
        --v2.1     - convert from Postman Collection Schema v2.0 into v2.1
        -a, --all  - convert to all of formats listed above

If no FORMATS specified then --http implied.
Any of FORMATS can be specified at the same time or replaced by --all.

Example:
    ./pm-convert \
        -f ~/dir1/first.postman_collection.json \
        --directory ~/team \
        --file ~/dir2/second.postman_collection.json \
        --env ~/localhost.postman_environment.json \
        -d ~/personal \
        --var "myvar=some value" \
        -o ~/postman_export \
        --all

注意事项

  1. pm-convert 执行的结果是一系列生成的文件。最有可能的是,它们将包含错误,例如未插值的 {{variables}} 值(由于集合中缺失),错误的命令格式或带有主体的 GET。在使用之前,您必须检查任何生成的文件。
  2. 确保每个(我的意思是 每个)集合(不是集合文件)、其文件夹和/或请求具有唯一的名称。如果不是,您可以在 Postman 中重命名它们,或将具有类似名称的集合转换为不同的目录。否则,任何生成的文件都可能被另一个文件意外覆盖。

关于变量插值的说明

  1. 您可以使用 -e 来指定替换请求中变量的位置。
  2. 您可以使用一个或多个 --var 来替换特定的环境变量为您自己的值。
  3. 正确的语法是 --var "NAME=VALUE"NAME 可以在花括号中,如 {{NAME}}
  4. 由于 -e 是可选的,所以一系列的 --var 将模拟一个环境。而且,您提供的环境文件中是否有 --var 并不重要。
  5. 即使您没有提供 -e 和/或 --var,任何变量也可能仍然被集合(如果有的话)覆盖,所以最后的优先级最高。

关于 Postman 模式之间的转换的说明

您可以使用--v2.1将v2.1转换为v2.1(这不是打字错误)。同样适用于--v2.0

有一种情况,当集合通过Postman API导出时。在这种情况下,集合本身位于单个根对象中,称为collection,如下所示:

{
   "collection": {
      // your actual collection here
   }
}

因此,pm-convert将仅将实际数据提升到顶层并写入磁盘。

设置文件

您可能希望一次性指定参数,然后在每次使用时无需显式定义pm-convert的参数。

这可以通过几种方式实现。

  1. 将此文件保存为项目目录中的pm-convert-settings.json

    {
        "directories": [],
        "files": [],
        "environment": "",
        "output": "",
        "preserveOutput": false,
        "formats": [],
        "vars": {}
    }

    填写您需要的值。

  2. 在命令末尾添加--dump,您提供的所有参数都将转换为并保存为当前工作目录中的pm-convert-settings.json。例如,在--help文件中将包含此信息:

    {
        "directories": [
            "~/team",
            "~/personal"
        ],
        "files": [
            "~/dir1/first.postman_collection.json",
            "~/dir2/second.postman_collection.json"
        ],
        "environment": "~/localhost.postman_environment.json",
        "output": "~/postman_export",
        "preserveOutput": false,
        "formats": [
            "http",
            "curl",
            "wget",
            "v2.0",
            "v2.1"
        ],
        "vars": {
            "myvar": "some value"
        }
    }

    如果设置文件已存在,则您将被询问要做什么:覆盖它、备份它或退出。

一旦设置文件保存在当前目录中,您只需运行pm-convert即可。设置将像通过显式传递参数一样应用。

如何实现新的格式

  1. ./src/Converters中创建新的命名空间,并按您选择的格式命名它。
  2. 创建两个类,用于转换器和请求对象,分别扩展Converters\Abstract\Abstract{Converter, Request}
  3. 根据您要实现的格式更改新请求类中的常量值。
  4. Converters\ConvertFormat中添加您的转换器类名称。
  5. 在转换器中编写您自己的逻辑,编写新方法并重写抽象方法。

许可证

您可以根据MIT许可证使用、分享和开发此项目。

Postman是Postman, Inc.的受保护的合法商标

免责声明

不是以任何方式与Postman, Inc.有关联。

我只是一个被迫使用这个javascripted gigachad-shitmonster的后端开发者。

因此,这个项目的目标是

  • 将数据和其同步置于自己的透明控制之下;
  • 轻松迁移到更内存容忍且更有生产力的东西,更容易使用且免费;
  • 摆脱供应商锁定,对团队施加严格的限制,并且不必为重而笨重的WYSIWYG支付巨额费用;
  • 给您这些机会。