网站怎么开发设计,包括搜索引擎排名、网页标签优化、相关链接交换、网络广告投放等,微网站 杭州,商丘网站制作公司修改postman工具的代码生成工具加入response自动生成POJO代码如上图可以快速把请求这个动作转成code#xff0c;减少重复性劳动。但是有一点我觉得可以优化下 就是返回的json如果也能自动转成代码就好了。不然在需要把json序列化成java或者csharp的POJO对象时还得自己coding转… 修改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秒左右定位到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 \nresult.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);
}定位到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 \nresult.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