compatibility-layer.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // ... existing code ...
  2. // 获取文档列表
  3. app.get('/api/documentation', requireLogin, async (req, res) => {
  4. try {
  5. const docList = await getDocumentList();
  6. res.json(docList);
  7. } catch (error) {
  8. console.error('获取文档列表失败:', error);
  9. res.status(500).json({ error: '获取文档列表失败', details: error.message });
  10. }
  11. });
  12. // 获取单个文档内容
  13. app.get('/api/documentation/:id', requireLogin, async (req, res) => {
  14. const docId = req.params.id;
  15. console.log(`获取文档内容请求,ID: ${docId}`);
  16. try {
  17. // 获取文档列表
  18. const docList = await getDocumentList();
  19. // 查找指定ID的文档
  20. const doc = docList.find(doc => doc.id === docId || doc._id === docId);
  21. if (!doc) {
  22. return res.status(404).json({ error: '文档不存在', docId });
  23. }
  24. // 如果文档未发布且用户不是管理员,则拒绝访问
  25. if (!doc.published && !isAdmin(req.user)) {
  26. return res.status(403).json({ error: '无权访问未发布的文档' });
  27. }
  28. // 获取文档完整内容
  29. const docContent = await getDocumentContent(docId);
  30. // 合并文档信息和内容
  31. const fullDoc = {
  32. ...doc,
  33. content: docContent
  34. };
  35. res.json(fullDoc);
  36. } catch (error) {
  37. console.error(`获取文档内容失败,ID: ${docId}`, error);
  38. res.status(500).json({
  39. error: '获取文档内容失败',
  40. details: error.message,
  41. docId
  42. });
  43. }
  44. });
  45. // ... existing code ...