page.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. // 处理页面数据相关的逻辑
  2. // 渲染来自runapi的文档
  3. const rederPageContent = page_content => {
  4. let obj;
  5. // 先定义一个html反转义的函数
  6. const unescapeHTML = str =>
  7. str.replace(
  8. /&|<|>|'|"/g,
  9. tag =>
  10. ({
  11. "&": "&",
  12. "&lt;": "<",
  13. "&gt;": ">",
  14. "&#39;": "'",
  15. "&quot;": '"'
  16. }[tag] || tag)
  17. );
  18. page_content = unescapeHTML(page_content);
  19. try {
  20. obj = JSON.parse(page_content);
  21. } catch (e) {
  22. // console.log(`不支持解析的页面内容:${page_content}`);
  23. }
  24. if (!obj || !obj.info || !obj.info.url) {
  25. return page_content;
  26. }
  27. console.log(obj);
  28. let newContent = `
  29. [TOC]
  30. ##### 简要描述
  31. - ${obj.info.description ? obj.info.description : "无"}
  32. ##### 请求URL
  33. - \` ${obj.info.url} \`
  34. ##### 请求方式
  35. - ${obj.info.method}
  36. `;
  37. if (
  38. obj.request.headers &&
  39. obj.request.headers[0] &&
  40. obj.request.headers[0].name
  41. ) {
  42. newContent += `
  43. ##### Header
  44. |header|必选|类型|说明|
  45. |:----- |:-----|-----|
  46. `;
  47. const headers = obj.request.headers;
  48. headers.map(one => {
  49. newContent += `|${one.name} |${one.require > 0 ? "是" : "否"} |${
  50. one.type
  51. } |${one.remark ? one.remark : "无"} |
  52. `;
  53. });
  54. }
  55. const params = obj.request.params[obj.request.params.mode];
  56. if (params && params[0] && params[0].name) {
  57. newContent += `
  58. ##### 请求参数
  59. |参数名|必选|类型|说明|
  60. |:----- |:-----|-----|
  61. `;
  62. params.map(one => {
  63. newContent += `|${one.name} |${one.require > 0 ? "是" : "否"} |${
  64. one.type
  65. } |${one.remark ? one.remark : "无"} |
  66. `;
  67. });
  68. }
  69. if (obj.request.params.mode == "json" && params) {
  70. newContent += `
  71. ##### 请求参数示例
  72. \`\`\`
  73. ${params}
  74. \`\`\`
  75. `;
  76. }
  77. const jsonDesc = obj.request.params.jsonDesc;
  78. if ( obj.request.params.mode == "json" && jsonDesc && jsonDesc[0] && jsonDesc[0].name) {
  79. newContent += `
  80. ##### json字段说明
  81. |字段名|必选|类型|说明|
  82. |:----- |:-----|-----|
  83. `;
  84. jsonDesc.map(one => {
  85. newContent += `|${one.name} |${one.require > 0 ? "是" : "否"} |${
  86. one.type
  87. } |${one.remark ? one.remark : "无"} |
  88. `;
  89. });
  90. }
  91. if (obj.response.responseExample) {
  92. newContent += `
  93. ##### 返回示例
  94. \`\`\`
  95. ${obj.response.responseExample}
  96. \`\`\`
  97. `;
  98. }
  99. if (
  100. obj.response.responseParamsDesc &&
  101. obj.response.responseParamsDesc[0] &&
  102. obj.response.responseParamsDesc[0].name
  103. ) {
  104. newContent += `
  105. ##### 返回参数说明
  106. |参数名|类型|说明|
  107. |:----- |:-----|-----|
  108. `;
  109. const returnParams = obj.response.responseParamsDesc;
  110. returnParams.map(one => {
  111. newContent += `|${one.name} |${one.type} |${
  112. one.remark ? one.remark : "无"
  113. } |
  114. `;
  115. });
  116. }
  117. newContent += `
  118. ##### 备注
  119. - ${obj.info.remark}
  120. `;
  121. return newContent;
  122. };
  123. export { rederPageContent };