Введение
Последнее время я занимаюсь разработкой настольного Rest API клиента. Довольно большая часть работы во взаимодействие с сервером, для оптимизации обработки запросов был написан класс Requester, обладающий следующими особенностями:
- возможность отправлять как https так и http запросы
- использование одной функции для всех типов запросов
- возможность получить все данные по запросу с сервера, а не одну страницу(n записей)
Программисту, использующему этот класс, придется работать тремя функциями:
void initRequester(const QString& host, int port, QSslConfiguration *value);
// функция посылает один запрос
void sendRequest(const QString &apiStr,
const handleFunc &funcSuccess,
const handleFunc &funcError,
int type = Type::GET,
const QVariantMap &data = QVariantMap());
//функция будет посылать GET запрос пока не будет достигнута последня старница
void sendMulishGetRequest(
const QString &apiStr,
const handleFunc &funcSuccess,
const handleFunc &funcError,
const finishFunc &funcFinish);
funcSuccess — callback, вызываемый в случае, если запрос выполнился успешно
funcError — callback в случае ошибки
typedef std::function<void(const QJsonObject &)> handleFunc;
typedef std::function<void()> finishFunc;
enum class Type {
POST,
GET,
PATCH,
DELET
};
DELET — не опечатка, так как с DELETE не собирается под WINDOWS.
Читать полностью »