Skip to content

API Docs

Serein edited this page Feb 1, 2024 · 5 revisions

工具类

Result<T> (Utility/Result.hpp)

表示可能出错的结果,它内部有两种状态:Ok和Err,当执行操作成功,状态为Ok,可以通过 unwrap() 方法获得值(类型为 T);如果操作失败,状态为Err,可以使用 unwrapErr() 方法获得错误信息 ErrorInfo

公有方法

  1. bool isOk() const

返回状态是否为Ok

  1. bool isErr() const

返回状态是否为Err

  1. const T& unwrap() const&/T& unwrap() &/T& unwrap() &&

当状态为Ok,返回操作成功获得的值

  1. const T& unwrapErr() const&/T& unwrapErr() &/T& unwrapErr() &&

当状态为Err,返回具体的错误

  1. T unwrapOr(T&& def) const

若状态为Ok,则返回操作成果的值,否则返回所输入的参数def

  1. T unwrapOrElse(F&& def) const

若状态为Ok,则返回操作成果的值,否则返回调用def的结果

  1. auto map(F&& f) const -> Result<decltype(f(std::declval<T>()))>

返回另一个Result,如果原本状态为Err,则返回Result与原本一致;如果原本状态为Ok,则返回Result中存储为调用f的结果(将成功执行操作所得到的结果作为调用f函数唯一的参数)

  1. auto andThen(F&& f) const -> decltype(f(std::declval<T>()))

若状态为Ok,则返回调用f的结果(将成功执行操作所得到的结果作为调用f函数唯一的参数),否则返回具体的错误

Tools (Utility/Tools.h)

可以将常用的辅助函数在此定义,并声明为静态成员函数

网络

CloudMusicClient (Service/NeteaseCloudMusic/CloudMusicClient.h)

单例类,只能使用 getInstance 静态方法获取实例。封装有网络请求与响应的功能。方法参数为接口请求参数,与空返回值,Result<T> 类型参数的函数对象

公有方法形如

getXXData(T1 param1, T2 param2, std::function<void(Result<ResponseEntity>)> callback);

内部采用异步回调方式,不会阻塞当前线程。函数对象 callback 表示对请求得到的参数进行处理,在网络请求收到结果时被自动调用

  1. void getSongLyric(SongId id, std::function<void(Result<SongLyricEntity>)> callback);

给定歌曲ID,获取歌曲歌词,得到 Result<SongLyricEntity> 类型的结果,并调用 callback

Note

其他方法请自行阅读以下文档,如果现有方法没有覆盖到所需功能,请自行添加所需代码。包括网络类(Service/NeteaseCloudMusic/CloudMusicClient),反序列化器(Service/NeteaseCloudMusic/Deserializer),实体类(Service/NeteaseCloudMusic/Response)

网易云音乐 NodeJS 版 API

配置文件

SettingsUtils (Utils/SettingsUtils.h)

单例类,只能通过 getInstance 静态方法获取实例。管理需要本地存储的配置项

Tip

可以将播放列表序列化后通过本类存储。

  1. QVariant value(QString key, QVariant defaultValue = QVariant());

返回 key 配置项的值,如果该项不存在,则返回 defaultValue

  1. void setValue(QString key, QVariant value);

设置 key 配置项的值为 value