.net几行代码音乐API各排行榜 热搜 入库

对比了几家大厂的音乐API的接口 这家相对规范些

现在开始从零开始 net6敏捷开发对接 入库吧

关键技术工具和思维

  1. 1 json 生成类
  2. 2 分析类 规划表设计
  3. 3 sqlsuger codefirst 生成表
  4. 4 封装get post 连接
  5. 5 类映射automapper
  6. 6 sqlsuger 插入数据

1 json 生成类

宇宙 第 一的编辑器生成 相应的类

cs 复制代码
using miniAPI.Model;

namespace miniAPI.Models
{
    public class QQtoplistDTO
    { 

        public class DataQQtoplistDTO
        {
            public List<Toplist> topList { get; set; }
        }

        public class Toplist
        {
            public DateTime CreateDate { get; set; } 
            public int id { get; set; }
            public int listenCount { get; set; }
            public string picUrl { get; set; }
            public List<TopSonglist> songList { get; set; }
            public string topTitle { get; set; }
            public int type { get; set; }
        }

        //public class Songlist
        //{
        //    public string singername { get; set; }
        //    public string songname { get; set; }
        //}

    }

    public class Outputpara<T>
    {
        private int _code = 500;
        public int code
        {
            get { return _code; }
            set { _code = value; }
        }
        public int subcode { get; set; }
        private string _msg = "";
        public string msg
        {
            get { return _msg; }
            set { _msg = value; }
        }
        public string message { get; set; }
        public int _default { get; set; }
        //public Data data { get; set; }
        public T data { get; set; }
    }

}

2 分析类 规划表设计

排行榜单 维度和songlist的明细

3 codefirst 生成表

sqlsuger 爽得不要不要的

4 封装get post 连接

使用 httpClientFactory

cs 复制代码
 {
 private IHttpClientFactory _httpClientFactory;
        private readonly Cachelper _cachelper;
        private readonly IMapper _mapper;
        public MusicApibyqqController(IMapper mapper, IHttpClientFactory httpClientFactory, Cachelper cachelper)
        {
            _mapper = mapper;
            _httpClientFactory = httpClientFactory;
            _cachelper = cachelper;
        } 

  [HttpGet]
        [Route("createmusicapibyqq")]
        public async Task<string> CreateMusicApibyqqIndex()
        {
 var client = _httpClientFactory.CreateClient();
            var param = new {   };
            string jsonData = System.Text.Json.JsonSerializer.Serialize(param);
            StringContent paramContent = new StringContent(jsonData);

 var logOutResponse = await client.GetAsync(url);
                string resultStr = await logOutResponse.Content.ReadAsStringAsync();
                Outputpara<DataQQtoplistDTO> response = System.Text.Json.JsonSerializer.Deserialize<Outputpara<DataQQtoplistDTO>>(resultStr);
       Console.WriteLine($"url:{url},  成功");
                }
                else
                {
                    Console.WriteLine($"url:{url}, 失败");
                }
            }; 
            return "同步完毕 toplist:" + listToplist.Count+ " TopSonglist:"+ listTopSonglist.Count;
}

5 类映射automapper

cs 复制代码
using AutoMapper;
using miniAPI.Model;
using static miniAPI.Models.QQtoplistDTO;

namespace miniAPI.Config
{
    /// <summary>
    /// Dto的映射配置
    /// </summary>
    public class AutoMapperConfigs : Profile
    {
        public AutoMapperConfigs()
        {
            //从 Toplist=》 TopMusiclist
            CreateMap<Toplist, TopMusiclist>(); 
        }
    }
}

注册

cs 复制代码
//Automapper映射
builder.Services.AddAutoMapper(typeof(AutoMapperConfigs));

映射 使用

_mapper.Map(temptoplist, tempTopMusiclist);

6 插入数据

cs 复制代码
 foreach (var temptoplist in response?.data?.topList)
                    { 
                        TopMusiclist tempTopMusiclist = new TopMusiclist(); 
                        _mapper.Map(temptoplist, tempTopMusiclist);
                        tempTopMusiclist.CreateDate = DateTime.Now;
                        tempTopMusiclist.codeid = temptoplist.id;
                        listToplist.Add(tempTopMusiclist);
                        foreach (var tempsongList in temptoplist.songList)
                        {
                            tempsongList.codeid=temptoplist.id; 
                            listTopSonglist.Add(tempsongList);
                        } 
                    } 
                    SqlSugarHelper.addtoplist(listToplist);
                    SqlSugarHelper.addtopSonglist(listTopSonglist); 
cs 复制代码
    Db.Insertable(listToplist).ExecuteCommand();

开始使用数据吧 据说API不能商用 QAQ 但放出来干啥QAQ

相关推荐
小满Autumn8 小时前
CommunityToolkit.Mvvm 架构笔记:现代 MVVM、源生成器与工程化实践
笔记·架构·c#·.net·wpf·mvvm
token-go8 小时前
Means:基于 .NET 10 打造的开源自部署 S3 兼容对象存储服务
低代码·.net·rxjava
加号38 小时前
【C#】 JSON 序列化与反序列化:从入门到最佳实践
c#·json
webmote339 小时前
从零打造虚拟小智:用浏览器模拟 IoT 设备的实践之路
aigc·.net·嵌入式
li星野13 小时前
FastAPI 响应类型完全指南:从 JSON 到流式响应、异常处理与输出模型
前端·json·fastapi
Alan_7514 小时前
Python + Pytest 接口自动化测试方案
api
m0_5358175517 小时前
Mac下Claude Code完整配置指南:API中转+环境变量设置一步到位
gpt·macos·node.js·api·claude·claudecode·88api
步步为营DotNet17 小时前
探索.NET 11:Blazor 在跨平台客户端应用开发的进阶实践
前端·asp.net·.net
就叫飞六吧18 小时前
JSON 与 JSON Schema:从“数据快递”到“使用说明书”
json
奇树谦20 小时前
YAML、XML、JSON、TOML、INI、CSV 全面对比:配置文件和数据交换到底该怎么选?
xml·json