【 在 hgoldfish 的大作中提到: 】
: 你这个例子举得有点奇怪啊。。不要把序列化和反序列化和 http 库混在一起啊。。
: 如果要做反序列化,那也是提供一个这种的:
: struct HttpResponse {
: ...................
所以我之前说你的 http 库不modern,感觉是 05 年左右的风格,这也是一个问题
const HttpResponse &r = api1.get(url1);
const HttpResponse &r = api2.get(url2);
返回类型都是 HttpResponse, 然后使用时才获取类型,用户每次调用都要对着文档看看这个 API 返回的是什么类型,然后再调用 r.value<Type>()
而现在的 API 库通常都是这样的
template <typename T>
struct http_result{
int status;
T body;
}
template<typename T>
class api_base{
http_result<T> request(){};
}
class ApiUser : api_base<User>
{
http_result<User> request() override{}
}
类型定义和反序列化都写在库里,而不是交给用户
使用时(这里都可以用 auto)
ApiUser api;
http_result<User> r = api.request();
if(r.status >= 200 && r.status <= xxx){
User u = r.model;
}
--
修改:hanjiamajia FROM 199.19.107.*
FROM 199.19.107.*