/* * sers.postman 扩展 * sers.postman * Date : 2019-03-07 * author:lith */ ; (function (scope) { var objName = 'postman'; if (scope[objName]) return; var obj = {}; scope[objName] = obj; obj.collectionConfig = { //也可为 GET POST 等 method: 'GET', fileName: 'Sers.postman_collection(' + new Date().toJSON().slice(0,10) + ').json', value: { "info": { "_postman_id": "a791d304-0ff1-4726-b196-e0943980ab70", "name": "Sers", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" } } }; obj.environmentConfig = { fileName: 'Sers.postman_environment_localhost.json', value: { "id": "5597c8d1-509f-4c24-beba-16d1b7a85442", "name": "Sers-localhost", "values": [ { "key": "ApiHost", //"value": "localhost:4580", "value": location.host, "description": "", "enabled": true }, { "key": "At", "value": "", "description": "", "enabled": true } ], "_postman_variable_scope": "environment", "_postman_exported_at": "2019-03-08T02:24:57.105Z", //"_postman_exported_at": new Date().toJSON(), "_postman_exported_using": "Postman/6.7.4" } }; //apiDescs 为apiDesc数组 function apiDescToPostmanConfig(apiDescs) { /* apiStations { StationName1:[ {apiDesc1} ,{apiDesc2} ] ,StationName2:[ {apiDesc3} ,{apiDesc4} ] } */ //(x.1) 构建apiStations var apiStations = {}; for (var t in apiDescs) { var apiDesc = apiDescs[t]; if (!apiDesc) continue; var route = apiDesc.route; try { var stationName = route.split('/')[1]; } catch (e) { } if (!stationName) continue; var station = apiStations[stationName]; if (!station) { station = apiStations[stationName] = []; } station.push(apiDesc); } //(x.2) 构建postman config var config = { "info": obj.collectionConfig.value.info, "item": [] }; var root = config.item; //(x.3) 构建postmanItem for (var stationName in apiStations) { var rootItem = apiStationToPostmanItem(apiStations[stationName], stationName); root.push(rootItem); } //(x.4) 排序 root.sort(function (a, b) { return a.name < b.name ? -1 : 1; }); return config; } function apiStationToPostmanItem(apiDescs, stationName) { var rootItem = { "name": stationName, "item": [] }; var item = rootItem.item; apiDescs.sort(function (a, b) { return a.route < b.route ? -1 : 1; }); for (var i in apiDescs) { try { var apiDesc = apiDescs[i]; item.push(apiDescToPostmanItem(apiDesc, i)); } catch (e) { console.log(e); } } return rootItem; }; function objToString(obj) { if (obj == null || typeof (obj) == 'undefined') return null; if ( typeof (obj) == 'string') return obj; return JSON.stringify(obj, null, 2); } function getNotNullString(str) { if (str == null || typeof (str) == 'undefined') return ''; return str; } function apiDescToPostmanItem(apiDesc, index) { var route = apiDesc.route.slice(1); var method = obj.collectionConfig.method; try { method = apiDesc.extendConfig.httpMethod; } catch (e) { } var item = { "name": "x." + (1 + parseInt(index)) + " " + route + " " + getNotNullString(apiDesc.name), "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": method, "header": [ { "key": "Authorization", "value": "Bearer {{At}}", "type": "text" }, { "key": "Content-Type", "value": "application/json", "type": "text" } ], "body": { "mode": "raw", //"raw": "{\n\t\"arg1\":\"valu1\",\n\t\"arg2\":{\"arg2_1\":\"value2_1\"}\n}" "raw": objToString(sers.ssModel.getExampleBySsModel(apiDesc['argType'])) }, "url": { "raw": "http://{{ApiHost}}/" + route, "protocol": "http", "host": [ "{{ApiHost}}" ] //, //"path": [ // "station1", // "api1" //] , "path": route.split('/') } }, "response": [] }; return item; } obj.apiDescToPostmanConfig = apiDescToPostmanConfig; })('undefined' != typeof (sers) ? sers : (sers = {})); ;/* SsApiDesc: { "catagory":"ApiStation1/ss/ccc" ,"description":"获取用户信息" //路由 ,"route":"ApiStation1/path1/path2/api1.html" //请求参数类型 SsModel类型 ,"argType": { SsModel } //返回数据类型 SsModel类型 ,"returnType": { SsModel } } postman config //PostManDemo.postman_collection.json { "info": { "_postman_id": "a791d304-0ff1-4726-b196-e0943980ab70", "name": "PostManDemo", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "item": [ { "name": "fold1aaa", "item": [ { "name": "fold1/api", "request": { "method": "POST", "header": [ { "key": "Authorization", "value": "Bearer *iDB49A7S_APP_LINUX", "type": "text" }, { "key": "Content-Type", "value": "application/json", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n\t\"arg1\":\"valu1\",\n\t\"arg2\":{\"arg2_1\":\"value2_1\"}\n}" }, "url": { "raw": "http://{{apiHost}}/station1/api1", "protocol": "http", "host": [ "{{apiHost}}" ], "path": [ "station1", "api1" ] } }, "response": [] } ] } ] } */;