对比了几家大厂的音乐API的接口 这家相对规范些
现在开始从零开始 net6敏捷开发对接 入库吧
关键技术工具和思维
- 1 json 生成类
- 2 分析类 规划表设计
- 3 sqlsuger codefirst 生成表
- 4 封装get post 连接
- 5 类映射automapper
- 6 sqlsuger 插入数据
1 json 生成类
宇宙 第 一的编辑器生成 相应的类
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
{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
using AutoMapper;
using miniAPI.Model;
using static miniAPI.Models.QQtoplistDTO;namespace miniAPI.Config
{/// <summary>/// Dto的映射配置/// </summary>public class AutoMapperConfigs : Profile{public AutoMapperConfigs(){//从 Toplist=》 TopMusiclistCreateMap<Toplist, TopMusiclist>(); }}
}
注册
//Automapper映射
builder.Services.AddAutoMapper(typeof(AutoMapperConfigs));
映射 使用
_mapper.Map(temptoplist, tempTopMusiclist);
6 插入数据
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);
Db.Insertable(listToplist).ExecuteCommand();
开始使用数据吧 据说API不能商用 QAQ 但放出来干啥QAQ