如上圖能夠快速把請求這個動做轉成code,減小重複性勞動。html
可是有一點我以爲能夠優化下 就是返回的json若是也能自動轉成代碼就行了。java
否則在須要把json序列化成java或者csharp的POJO對象時還得本身coding轉一遍。node
因爲最近常常會用到這個功能,雖然我找到一個站點把json複製粘貼進去,而後點個按鈕就能夠轉成POJO,可是我以爲仍是有不少重複性的勞動。web
對我我這種懶人,postman又沒有提供可擴展的功能。該怎麼辦呢?npm
postman是基於Electron框架的一個產品,以下圖能夠把ChromeTool打開json
這個功能能夠修改代碼後 保存到你的本機磁盤,而後下一次就會檢測 若是有設置localOverrides的話就用你修改事後的代碼!api
結論:postman比較是一個商業工具,它內部有檢測機制,開啓這個功能就會不能正常使用!因此放棄! 緩存
安裝asar工具markdown
npm install -g asar
定位到postman的asar目錄解壓出來app
asar extract app.asar app
找源碼的過程我就不說了 這裏面要實現我上面說的功能 須要修改2個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);
} };
原理說明:這裏是在網上找了一個接口,傳json就能夠轉成代碼
這裏注意一下,用的xhr,同步的方式調用
(異步的方式postman我測試了不行,由於postman的上游代碼是直接拿結果的,改爲異步的話上游代碼也得改,這個功能其實同步也還好,就比以前稍微慢了1秒左右)
//下面加入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);
}
//下面加入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) {
}
asar pack app app.asar