package com.qf.myafterprojecy.controller; import com.qf.myafterprojecy.pojo.ResponseMessage; import org.commonmark.node.Node; import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; import org.springframework.core.io.ClassPathResource; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; /** * 帮助控制器类,处理前端调用api/help请求 * 提供README_API.md文件的读取和返回功能 */ @RestController @RequestMapping("/api/help") public class HelpController { /** * 获取README_API.md文件内容 * @return 返回包含README_API.md文件内容的ResponseMessage对象 */ @GetMapping public ResponseMessage getReadmeApi() { try { // 获取README_API.md文件的绝对路径 String readmePath = "e:\\MyWebProject\\MyAfterProjecy\\README_API.md"; File readmeFile = new File(readmePath); // 检查文件是否存在 if (readmeFile.exists() && readmeFile.isFile()) { // 读取文件内容 String markdownContent = new String(FileCopyUtils.copyToByteArray(new FileInputStream(readmeFile)), StandardCharsets.UTF_8); // 将Markdown转换为HTML String htmlContent = convertMarkdownToHtml(markdownContent); return ResponseMessage.success(htmlContent, "获取API文档成功"); } // 如果直接路径不存在,尝试从类路径加载 try { ClassPathResource resource = new ClassPathResource("README_API.md"); String markdownContent = new String(FileCopyUtils.copyToByteArray(resource.getInputStream()), StandardCharsets.UTF_8); // 将Markdown转换为HTML String htmlContent = convertMarkdownToHtml(markdownContent); return ResponseMessage.success(htmlContent, "获取API文档成功"); } catch (IOException e) { // 记录详细错误信息以便调试 System.err.println("无法从类路径加载README_API.md: " + e.getMessage()); return ResponseMessage.error("未找到README_API.md文件"); } } catch (Exception e) { // 捕获所有异常并记录详细错误信息 System.err.println("处理README_API.md时出错: " + e.getMessage()); e.printStackTrace(); return ResponseMessage.error("读取README_API.md文件失败: " + e.getMessage()); } } /** * 将Markdown文本转换为HTML * @param markdown 原始Markdown文本 * @return 转换后的HTML字符串 */ private String convertMarkdownToHtml(String markdown) { Parser parser = Parser.builder().build(); Node document = parser.parse(markdown); HtmlRenderer renderer = HtmlRenderer.builder().build(); return renderer.render(document); } }