【Hook】postman工具的代码生成工具让它锦上添花

修改postman工具的代码生成工具加入response自动生成POJO代码

如上图可以快速把请求这个动作转成code,减少重复性劳动。

但是有一点我觉得可以优化下 就是返回的json如果也能自动转成代码就好了。

不然在需要把json序列化成java或者csharp的POJO对象时还得自己coding转一遍。

由于最近经常会用到这个功能,虽然我找到一个站点把json复制粘贴进去,然后点个按钮就可以转成POJO,但是我觉得还是有很多重复性的劳动。

对我我这种懒人,postman又没有提供可扩展的功能。该怎么办呢?

分析postman

 postman是基于Electron框架的一个产品,如下图可以把ChromeTool打开

尝试一:LocalOverrides功能

这个功能可以修改代码后 保存到你的本机磁盘,然后下一次就会检测 如果有设置localOverrides的话就用你修改过后的代码!

结论:postman比较是一个商业工具,它内部有检测机制,开启这个功能就会不能正常使用!所以放弃! 

尝试二:直接修改postman的源码

1.定位到postman的源码如下图是一个asar文件

2.安装asar工具解压到本地

安装asar工具

npm install -g asar

定位到postman的asar目录解压出来


asar extract app.asar app

3.找到源码

找源码的过程我就不说了 这里面要实现我上面说的功能 需要修改2个js源码

  • vendor-shared.js --》这是postman的主源码 有几百万行代码

  • postman-code-generators.js --》这个是代码生成的逻辑

4. 修改vendor-shared.js源码

定位到483842行 加入代码

代码的作用:在点击发送请求后,postman拿到代码如果是json格式的话 就存到本地缓存中

const transformResponseForLanguage = {json: function (value) {// This unescape step handles escape sequences like -// 1. Unicode code points - hexadecimal - fixed length - \uD834// 2. Special escape characters - \/// 这里加try {localStorage.setItem('_current_reponse_json', value);} catch (e) {}return Object(_js_modules_services_StringUnescape__WEBPACK_IMPORTED_MODULE_9__["unescape"])(value);} };

4. 修改postman-code-generators.js源码

原理说明:这里是在网上找了一个接口,传json就可以转成代码

这里注意一下,用的xhr,同步的方式调用

(异步的方式postman我测试了不行,因为postman的上游代码是直接拿结果的,改成异步的话上游代码也得改,这个功能其实同步也还好,就比之前稍微慢了1秒左右)

  1. 定位到632行 这里是生成csharp代码

	//下面加入json转POJO的代码
try {var input = localStorage.getItem('_current_reponse_json');var code = '';if(input){var requestType = {input : input,operationid:"jsontocsharp",settings:{UsePascalCase:true,UseJsonAttributes:false,UseFields:false,UseJsonPropertyName:false}};var data = JSON.stringify(requestType);var xhr = new XMLHttpRequest();xhr.addEventListener("readystatechange", function() {if(this.readyState === 4) {var next = false;var result = [];for(var i = 0;i< this.responseText.length;i++){var item = this.responseText[i];if(item == '\"'){}else if(item == "\\" || item == "/"){next = true}else if(next){next = false,result.push("\n")}else{result.push(item)}}code= '\n //Deserialize json response to POJO \n'+result.join("").replace('myJsonResponse','response.Content');	}});xhr.onerror = function () {return callback(null, headerSnippet + snippet + footerSnippet);}xhr.open("POST", "https://json2csharp.com/api/Default",false);xhr.setRequestHeader("Accept", "*/*");xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");xhr.setRequestHeader('Content-type', 'application/json');xhr.send(data);return callback(null, headerSnippet + snippet + code + footerSnippet);}
} catch (e) {return callback(null, headerSnippet + snippet + footerSnippet);
}
  1. 定位到16668行 这里是生成java代码


//下面加入json转POJO的代码
try {var input = localStorage.getItem('_current_reponse_json');var code = '';if(input){var requestType = {input : input,operationid:"jsontopojo",settings:{UseProperties:false}};var data = JSON.stringify(requestType);var xhr = new XMLHttpRequest();xhr.addEventListener("readystatechange", function() {if(this.readyState === 4) {var next = false;var result = [];for(var i = 0;i< this.responseText.length;i++){var item = this.responseText[i];if(item == '\"'){}else if(item == "\\"){next = true}else if(next){next = false,result.push("\n")}else{result.push(item)}}code= '\n //Deserialize json response to POJO \n'+result.join("").replace('myJsonResponse','response.Content');	}});xhr.onerror = function () {return callback(null, headerSnippet + snippet + footerSnippet);}xhr.open("POST", "https://json2csharp.com/api/Default",false);xhr.setRequestHeader("Accept", "*/*");xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");xhr.setRequestHeader('Content-type', 'application/json');xhr.send(data);snippet = snippet + code;}
} catch (e) {}

5.源码修改后重新打包成asar文件

asar pack app app.asar

搞定验证结果

java的方式

csharp的方式


原文地址:https://www.cnblogs.com/yudongdong/p/14256060.html 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2005/7/15[随便写写]

通过面试开始在公司正式上班了&#xff0c;去的很早&#xff0c;呵呵&#xff0c;以为里面的员工都需要敲卡的&#xff0c;不想给大家一个坏印象。环境么给我的感觉氛围很不错&#xff0c;没有传统IT行业那种被项目赶得焦头烂额的样子&#xff0c;可是我的性格决定了我不是那种…

java nature_Java Nature.nsf方法代码示例

import com.hankcs.hanlp.corpus.tag.Nature; //导入方法依赖的package包/类/*** 执行识别* param segResult 粗分结果* param wordNetOptimum 粗分结果对应的词图* param wordNetAll 全词图*/public static void Recognition(List segResult, WordNet wordNetOptimum, WordNet…

使用BeetleX.ESDoc构建文档搜索功能

BeetleX.ESDoc组件是基于ElasticSearch服务的文档搜索扩展组件。它在BeetleX.Elasticsearch的基础上包装一些基于文档检索的功能和方法&#xff0c;可以让你在不了解ElasticSearch API的情况下直接存储&#xff0c;删除和搜索相关信息。信息结构BeetleX.ESDoc定义了一个基础的文…

java在文件的后面添加_java 在file的尾部添加数据的两种方法总结

java 在file的尾部添加数据的两种方法总结问题描述:在文件的末尾追加内容方法1:利用RandomAccessFile类1.将randomAccessFile模式设置为rw2将randomAccessFile移动(seek)到文件末尾3追加数据4关闭流方法2:利用FileWriter类1.将FileWriter构造方法第二个参数置为true.表示在尾部…

日产汽车源码遭泄露

喜欢就关注我们吧&#xff01;日产北美公司开发和使用的移动应用及内部工具的源代码于近日在网上泄露&#xff0c;原因是该公司错误配置了其中一台 Git 服务器。瑞士软件工程师 Tillie Kottmann 向 ZDNet 透露&#xff0c;此次泄露源于一台配置错误的 Bitbucket Git 服务器的信…

开源纯C#轻量级数据库引擎:SharpHSQL 1.0.3.0版本

开源纯C#轻量级数据库引擎&#xff1a;SharpHSQL 1.0.3.0版本出了&#xff12;个多月了&#xff0c;我一直没有给大家报道&#xff0c;这是目前唯一发现的用纯C#开发的稳定的轻量级数据库引擎&#xff0c;在我的建议下&#xff0c;已经支持Unicode&#xff0c;包括简体中文了。…

mysql约束深入了解_MySQL 的约束

约束是添加在列上, 用来约束列的!1. 主键约束(表中的某行的唯一标识)主键的特点:非空唯一被引用创建表时, 指定主键的两种方式&#xff1a;// 需求: 指定 sid 列为主键列, 即为 sid 列添加主键约束// 第一种方式:CREATE TABLE stu(sid CHAR(6) PRIMARY KEY,sname VARCHAR(20),a…

中台的故事结束了?

大家好&#xff0c;我是Z哥。所谓30年河东30年河西&#xff0c;最近阿里开始去中台了。这是不是意味着中台时代的落幕&#xff0c;去中心化时代的开始&#xff1f;谁都说不准。但是我们可以来思考一下这个事情背后释放出了什么样的信号。对我们普通人&#xff0c;特别是互联网行…

[ZT]C#的多线程机制探索(2)

三.线程的同步和通讯——生产者和消费者假设这样一种情况&#xff0c;两个线程同时维护一个队列&#xff0c;如果一个线程对队列中添加元素&#xff0c;而另外一个线程从队列中取用元素&#xff0c;那么我们称添加元素的线程为生产者&#xff0c;称取用元素的线程为消费者。…

java树算法_Java数据结构算法(三)树

本文旨作于收集整理使用&#xff01;&#xff01;导航一、树树(Tree)是n(n≥0)个结点的有限集&#xff0c;n0称之为空树。在非空树种&#xff1a;当有且仅有一个特定的称为根(Root)的结点&#xff1b; 其余结点可以划分为m(m&#xff1e;0)个互不相交的有限集T1、T2 、…、Tm&a…

Blazor VS 传统Web应用程序

原文作者: Christian Findlay原文链接&#xff1a;https://christianfindlay.com/2020/07/09/blazor-vs-traditional-web-apps/Blazor是Microsoft团队开发的单页面应用程序&#xff08;SPA&#xff09;框架&#xff0c;它是与React&#xff0c;Angular和Vue.js有相同之处&#…

java 并发 面试题_阿里面试官总结10个经典技术题:Java多线程与并发面试题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼5&#xff0c;有哪些不同的线程生命周期&#xff1f;当我们在Java程序中新建一个线程时&#xff0c;它的状态是New。当我们调用线程的start()方法时&#xff0c;状态被改变为Runnable。线程调度器会为Runnable线程池中的线程分配CP…

如何在 Web Forms 中引入依赖注入机制

依赖注入技术就是将一个对象注入到一个需要它的对象中&#xff0c;同时它也是控制反转的一种实现&#xff0c;显而易见&#xff0c;这样可以实现对象之间的解耦并且更方便测试和维护&#xff0c;依赖注入的原则早已经指出了&#xff0c;应用程序的高层模块不依赖于低层模块&…

Gentle.Net学习笔记四:修改代码,使用Oracle数据库

开始使用Gentle.Net的时候,我使用编译好的类库,可是不久就发现,如果要更好的利用Gentle.Net,你就不得不做一些修改,所以,还是使用源代码的方式为好. 使用源代码,Gentle.Net作为三个项目添加的解决方案中, Gentle.Common;Gentle.FrameWork;Gentle.Provider.Oracle (根据项目的…

python网页动图_python,tensorflow线性回归Django网页显示Gif动态图

1.工程组成2.urls.py"""Django_machine_learning_linear_regression URL ConfigurationThe urlpatterns list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/2.1/topics/http/urls/Examples:Function views1. Add …

asp.net core集成CKEditor实现图片上传功能

背景本文为大家分享了asp.net core 如何集成CKEditor &#xff0c;并实现图片上传功能的具体方法&#xff0c;供大家参考&#xff0c;具体内容如下。准备工作1.visual studio 2019 开发环境2.net core 2.0 及以上版本实现方法1、新建asp.net core web项目2、下载CKEditor这里我…

ValidationSummary 控件

真是有些郁闷到现在这个控件还一直没有用过.. 直到今天才发现.可以解决错误信息提示排版上的问题. 单独用RequiredFieldValidator 我以前一直没有设Text属性.结果一错误就是errormessage这边就出来了设了text后就不会显示errormessage 而显示Text了这个时候如果有ValidationSum…

java static new_java静态类new的对象是否能被回收?

问题来自一个线上GC频繁的应用&#xff0c;观察到老年代一直gc下不去导致应用被gc STW卡主假死&#xff0c;检查代码发现这样一段代码&#xff0c;感觉可疑代码如下&#xff1a;public class WriteEsWork {public static void write(List<EsIndexInfo> esList, String in…

看了一天小说

在公司呆了一天什么都没干&#xff0c;看了一天小说。都不知道自己啥时候变得这么堕落的&#xff0c;不过还好&#xff0c;至少小说是我喜欢看的那种&#xff0c;很热血的小说。不会有主管看到我的Blog吧&#xff0c; 明天要干点正事了&#xff0c;还是得跟自己说一下&#xff…

Blazor VS React / Angular / Vue.js

原文作者: Christian Findlay原文链接&#xff1a;https://christianfindlay.com/2020/06/04/blazor-vs-react-angular-vue-js/Blazor是一项新的Microsoft技术&#xff0c;允许开发人员使用C&#xff03;为浏览器编写代码, 本文将Blazor与其他三个常见SPA框架进行了比较&#x…