首页 > 其他分享 >根据json转idea 自带Http Client脚本

根据json转idea 自带Http Client脚本

时间:2024-10-18 11:48:12浏览次数:6  
标签:JsonNode Http name idea json result query path append

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class ApiDocConverter {
    public static void main(String[] args) throws Exception {
        String json = "{\n" +
                "  \"paths\": {\n" +
                "    \"/dev-api/system/subjectResult/exportUserList\": {\n" +
                "      \"post\": {\n" +
                "        \"tags\": [\n" +
                "          \"bd-subject-result-controller\"\n" +
                "        ],\n" +
                "        \"summary\": \"导出对应成绩信息\",\n" +
                "        \"operationId\": \"exportUserListUsingPOST\",\n" +
                "        \"parameters\": [\n" +
                "          {\n" +
                "            \"name\": \"batch\",\n" +
                "            \"in\": \"query\",\n" +
                "            \"required\": false,\n" +
                "            \"style\": \"form\",\n" +
                "            \"schema\": {\n" +
                "              \"type\": \"string\"\n" +
                "            }\n" +
                "          },\n" +
                "          {\n" +
                "            \"name\": \"year\",\n" +
                "            \"in\": \"query\",\n" +
                "            \"required\": false,\n" +
                "            \"style\": \"form\",\n" +
                "            \"schema\": {\n" +
                "              \"type\": \"string\"\n" +
                "            }\n" +
                "          }\n" +
                "        ]\n" +
                "      }\n" +
                "    },\n" +
                "    \"/dev-api/system/subjectResult/test/{subjectId}\": {\n" +
                "      \"get\": {\n" +
                "        \"parameters\": [\n" +
                "          {\n" +
                "            \"name\": \"subjectId\",\n" +
                "            \"in\": \"path\",\n" +
                "            \"description\": \"subjectId\",\n" +
                "            \"required\": true,\n" +
                "            \"style\": \"form\",\n" +
                "            \"schema\": {\n" +
                "              \"type\": \"integer\",\n" +
                "              \"format\": \"int64\"\n" +
                "            }\n" +
                "          },\n" +
                "          {\n" +
                "            \"name\": \"number\",\n" +
                "            \"in\": \"query\",\n" +
                "            \"description\": \"number\",\n" +
                "            \"required\": true,\n" +
                "            \"style\": \"form\",\n" +
                "            \"schema\": {\n" +
                "              \"type\": \"number\",\n" +
                "              \"format\": \"float\"\n" +
                "            }\n" +
                "          },\n" +
                "          {\n" +
                "            \"name\": \"sort\",\n" +
                "            \"in\": \"query\",\n" +
                "            \"description\": \"sort\",\n" +
                "            \"required\": true,\n" +
                "            \"style\": \"form\",\n" +
                "            \"schema\": {\n" +
                "              \"type\": \"number\",\n" +
                "              \"format\": \"float\"\n" +
                "            }\n" +
                "          }\n" +
                "        ]\n" +
                "      }\n" +
                "    }\n" +
                "  }\n" +
                "}";

        ObjectMapper mapper = new ObjectMapper();
        JsonNode rootNode = mapper.readTree(json);

        StringBuilder result = new StringBuilder();

        JsonNode pathsNode = rootNode.path("paths");
        pathsNode.fieldNames().forEachRemaining(path -> {
            JsonNode pathNode = pathsNode.path(path);
            pathNode.fieldNames().forEachRemaining(method -> {
                JsonNode methodNode = pathNode.path(method);
                result.append("### ").append(method.toUpperCase()).append(" request with dynamic variables\n");
                result.append(method.toUpperCase()).append(" http://{{host}}/{{staticurl}}").append(path.replace("{", "{{").replace("}", "}}"));
                if (methodNode.has("parameters")) {
                    boolean firstQueryParam = true;
                    for (JsonNode param : methodNode.path("parameters")) {
                        String paramName = param.path("name").asText();
                        String paramIn = param.path("in").asText();
                        if ("query".equals(paramIn)) {
                            if (firstQueryParam) {
                                result.append("?");
                                firstQueryParam = false;
                            } else {
                                result.append("&");
                            }
                            result.append(paramName).append("=").append("{{").append(paramName).append("}}");
                        }
                    }
                }
                result.append("\nAccept: application/json\n\n");
            });
        });

        System.out.println(result.toString());
    }
}

标签:JsonNode,Http,name,idea,json,result,query,path,append
From: https://www.cnblogs.com/kakaBluce/p/18473959

相关文章

  • 一文说清楚http、tcp、socket、websocket区别
    写在开头阅读本文,需要您对tcp/ip协议簇协议有一定的了解,本文旨在带你了解Socket到底是啥,他与tcp/ip协议簇、WebSocket、Http等协议之间的关系OSI网络七层模型第一层:应用层,定义了用于在网络中进行通信和传输数据的接口;(Http协议位于该层)第二层:表示层,定义不同系统中数......
  • 解决IDEA开发卡顿
     https://www.cnblogs.com/lyn8100/p/17009930.html 目录问题背景解决方案1.更改操作系统快捷方式2.更改idea启动配置参数3.增加编译内存(必做)4.卸载不必要的插件(选做)5.清理缓存(选做)6.减少内存7.适当关闭idea的Inspections的检查或者开发时完全关闭Inspections的......
  • 一年期https证书申请方法!
    HTTPS证书是一种数字证书,用于在客户端和服务器之间建立加密连接,确保数据传输的安全性。它的作用是验证网站身份,保护用户数据不被窃取或篡改。现在一年期的免费https证书比较少,但经过小编仔细寻找,我这边还是有所发现的,下面也详细给大家介绍一下申请的方法以及步骤免费HTTPS......
  • Idea插件-arthas idea
    ......
  • IntelliJ IDEA 2024 安装使用 (附加激活码、补丁,亲测有效!)
    第一步:下载IDEA安装包访问IDEA官网,下载IDEA2024.1.4版本的安装包,下载链接如下:idea官方链接也可以在这里点击下载idea下载idea第二步:安装IDEA点击xx关掉程序!第三步:下载补丁下载地址(里面包含激活码)https://pan.quark.cn/s/9dbfe698c064补丁下载成功后,......
  • https
    https对称加密:相同的秘钥tls协议对称加密:客户端访问wed服务器时首先发送给服务器一个hello请求其中包括客户端所支持的tls版本,支持的加密算法,然后服务器接受到这些信息后就会选择最优的tls版本和加密算法,并将这些信息反馈给客户端,然后客户端响应信息生成一段随机的字符串通......
  • JSON和XML的对比及应用领域
    JSON和XML的对比对比表格对比维度JSONXML可读性通常更简洁,易于阅读和编写12结构清晰,但可能因标签和属性而显得冗长1解析难度解析通常比XML简单,多数现代编程语言内置解析器1解析可能涉及复杂的DOM操作,需要更多代码1数据体积通常更紧凑,文件大小较小1可能包含更......
  • 性能测试:流量回放工具-GoReplay!结合一款无需CA证书即可抓取HTTPS明文的工具,简直无敌
    性能测试:流量回放工具-GoReplay!结合一款无需CA证书即可抓取HTTPS明文的工具,简直无敌。GoReplay是一个开源网络监控工具,可以将实时HTTP流量捕获并重放到测试环境。应用成熟的过程中,测试所需的工作量往往会成倍增长。针对这个问题,GoReplay为使用者提供了重用现有通信量......
  • HttpUtils 详解
    一、详解1.1介绍现如今的Web项目,由服务端向外发起网络请求的场景,基本上随处可见!传统情况下,在服务端代码里访问http服务时,一般会使用JDK的HttpURLConnection或者Apache的HttpClient,不过这种方法使用起来太过繁琐,而且api使用起来非常的复杂,还得操心资源回收。1.2......
  • spring boot fastjson Long 转字符串
     由于Long类型返回给前端时,如果数值过大,会导致精度丢失,这时候就需要把Long转成String。这时候如果专门为其写一个属性来存储,比较麻烦。这时候可以使用fastJson里的标签@JSONField(serializeUsing=ToStringSerializer.class)只要在model类上的Long字段加上这个标签,则会......