ASP.NET CORE WebApi接口示例

示例提供来源:A0~海阔天空

创建ASP.NET CORE API项目数据库访问自行百度,数据库结构参考文档就行,结构都类似。

完整的后端示例地址:https://github.com/chenyi2006520/SystemMenu

数据对象如下:

  1. /// <summary>
  2. /// 菜单表
  3. /// </summary>
  4. [Table("bee_system_menu")]
  5. public class SystemMenuEntity
  6. {
  7. /// <summary>
  8. /// ID
  9. /// </summary>
  10. [Key]
  11. [Required]
  12. public long id { get; set; }
  13. /// <summary>
  14. /// 父级ID
  15. /// </summary>
  16. [Required]
  17. public long pid { get; set; }
  18. /// <summary>
  19. /// 名称
  20. /// </summary>
  21. [Required]
  22. public string title { get; set; }
  23. /// <summary>
  24. /// 菜单图标
  25. /// </summary>
  26. public string icon { get; set; }
  27. /// <summary>
  28. /// 链接
  29. /// </summary>
  30. public string href { get; set; }
  31. /// <summary>
  32. /// 链接
  33. /// </summary>
  34. public string target { get; set; }
  35. /// <summary>
  36. /// 序号
  37. /// </summary>
  38. public int sort { get; set; }
  39. /// <summary>
  40. /// 是否菜单
  41. /// </summary>
  42. public bool status { get; set; }
  43. }
  1. /// <summary>
  2. /// 菜单结果对象
  3. /// </summary>
  4. public class MenusInfoResultDTO
  5. {
  6. /// <summary>
  7. /// 权限菜单树
  8. /// </summary>
  9. public List<SystemMenu> MenuInfo { get; set; }
  10. /// <summary>
  11. /// logo
  12. /// </summary>
  13. public LogoInfo LogoInfo { get; set; }
  14. /// <summary>
  15. /// Home
  16. /// </summary>
  17. public HomeInfo HomeInfo { get; set; }
  18. }
  19. public class LogoInfo
  20. {
  21. public string title { get; set; } = "sdsdsdsff";
  22. public string image { get; set; } = "images/logo.png";
  23. public string href { get; set; } = "";
  24. }
  25. public class HomeInfo
  26. {
  27. public string title { get; set; } = "首页";
  28. public string href { get; set; } = "page/welcome-1.html?t=1";
  29. }
  30. /// <summary>
  31. /// 树结构对象
  32. /// </summary>
  33. public class SystemMenu
  34. {
  35. /// <summary>
  36. /// 数据ID
  37. /// </summary>
  38. public long Id { get; set; }
  39. /// <summary>
  40. /// 父级ID
  41. /// </summary>
  42. public long PId { get; set; }
  43. /// <summary>
  44. /// 节点名称
  45. /// </summary>
  46. public string Title { get; set; }
  47. /// <summary>
  48. /// 节点地址
  49. /// </summary>
  50. public string Href { get; set; }
  51. /// <summary>
  52. /// 新开Tab方式
  53. /// </summary>
  54. public string Target { get; set; } = "_self";
  55. /// <summary>
  56. /// 菜单图标样式
  57. /// </summary>
  58. public string Icon { get; set; }
  59. /// <summary>
  60. /// 排序
  61. /// </summary>
  62. public int Sort { get; set; }
  63. /// <summary>
  64. /// 子集
  65. /// </summary>
  66. public List<SystemMenu> Child { get; set; }
  67. }

创建一个根对象来接受处理好的数据

  1. SystemMenu rootNode = new SystemMenu()
  2. {
  3. Id = 0,
  4. Icon = "",
  5. Href = "",
  6. Title = "根目录",
  7. };

递归处理数据库返回的数据方法参考如下,

  1. /// <summary>
  2. /// 递归处理数据
  3. /// </summary>
  4. /// <param name="systemMenuEntities"></param>
  5. /// <param name="rootNode"></param>
  6. public static void GetTreeNodeListByNoLockedDTOArray(SystemMenuEntity[] systemMenuEntities, SystemMenu rootNode)
  7. {
  8. if (systemMenuEntities == null || systemMenuEntities.Count() <= 0)
  9. {
  10. return;
  11. }
  12. var childreDataList = systemMenuEntities.Where(p => p.pid == rootNode.Id);
  13. if (childreDataList != null && childreDataList.Count() > 0)
  14. {
  15. rootNode.Child = new List<SystemMenu>();
  16. foreach (var item in childreDataList)
  17. {
  18. SystemMenu treeNode = new SystemMenu()
  19. {
  20. Id = item.id,
  21. Icon = item.icon,
  22. Href = item.href,
  23. Title = item.title,
  24. };
  25. rootNode.Child.Add(treeNode);
  26. }
  27. foreach (var item in rootNode.Child)
  28. {
  29. GetTreeNodeListByNoLockedDTOArray(systemMenuEntities, item);
  30. }
  31. }
  32. }

最后将rootNode的Child 赋值返回给 MenusInfoResultDTO.MenuInfo 返回给前端就行