FPGA_WebLab/server/src/TutorialController.cs

56 lines
1.5 KiB
C#

using System.IO;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
namespace server.Controllers;
/// <summary>
/// 教程 API
/// </summary>
[ApiController]
[Route("api/[controller]")]
public class TutorialController : ControllerBase
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
private readonly IWebHostEnvironment _environment;
public TutorialController(IWebHostEnvironment environment)
{
_environment = environment;
}
/// <summary>
/// 获取所有可用的教程目录
/// </summary>
/// <returns>教程目录列表</returns>
[HttpGet]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public IActionResult GetTutorials()
{
try
{
// 获取文档目录
string docPath = Path.Combine(_environment.WebRootPath, "doc");
if (!Directory.Exists(docPath))
{
return Ok(new { tutorials = new List<string>() });
}
// 获取所有子目录
var directories = Directory.GetDirectories(docPath)
.Select(Path.GetFileName)
.Where(dir => !string.IsNullOrEmpty(dir))
.ToList();
return Ok(new { tutorials = directories });
}
catch (Exception ex)
{
logger.Error(ex, "获取教程目录失败");
return StatusCode(500, new { error = "无法读取教程目录" });
}
}
}