Как стать автором
Обновить

GridmiAPI — простая и гибкая библиотека Android для работы с REST&RPC

Время на прочтение3 мин
Количество просмотров1.5K
Здравствуйте, хабровчане!

Когда занимаешься разработкой сетевых приложений под платформу Android, понимаешь, что одно и другое приложение похоже друг на друга. С этой мыслью у большинства разработчиков инициализируется и другая мысль — «Почему бы мне не использовать какие-либо готовые решения, ведь явно моя задача не нова?». С этого момента начинается поиск подходящих библиотек для решения актуального на сей момент вопроса. По истечению некоторого времени — профит. Казалось бы всё хорошо, ведь библиотека найдена и осталась только написать реализацию решения текущего вопроса. И тут начинаются проблемы. Связаны они с управлением потоков, да и вообще Java никогда не славилась своей компактностью, все «волшебство» должно быть реализовано непосредственно разработчиком. Порой я нахожу в этом только положительные стороны, ведь логика каждого проекта отличается друг от друга кардинально. Вам постоянно приходится переключатся с потока на поток, что не очень удобно и как описывалось ранее — получается громоздко. Решение данной проблемы было реализовано и ранее, но не столь компактно, как хотелось бы. На помощь приходит библиотека для работы с HTTP — GridmiAPI. Это максимально компактное решение, которое в свою очередь позволяет оперировать данными в реальном времени.

Рабочий процесс


Вся работа библиотеки начинается с её инициализации. Инициализация требуется единожды. Под инициализацией понимается следующая конструкция:

GridmiAPI.init("https://habr.com/API/", 8000, JSONObject.class);

  1. Адрес конечного узла обработки запросов
  2. Время ожидания ответа сервера
  3. Класс, к типу которого должен быть приведен ответ сервера

Вот и всё! Библиотека готова к полноценному использованию.

Первый запрос к серверу


Чтобы выполнить первый запрос к серверу, требуется написать всего несколько строк кода и требуемые нами данные у нас. Не верите? Смотрите:

GridmiAPI.onRequest(this, new GridmiAPI.Request("profile/get"), new GridmiAPI.Handler.OUT() {
    
    @Override
    protected void onSuccess(GridmiAPI.Response response) {
        Log.d("TagGridmiAPI", "result = " + ((JSONObject) response.getData()).toString());
    }

    @Override
    protected void onFailed(Exception exception) {
        Log.d("TagGridmiAPI", "exception = " + exception.getMessage());
    }
    
}).start();

Поздравляю! Это Ваш «Hello world!» с использованием данной библиотеки. Давайте рассмотрим два переписанных метода класса GridmiAPI.Handler.OUT. Для начала следует написать, что эти два метода вызываются в основном потоке, поэтому по завершению запроса нет смысла обращаться к активности чтобы запустить основной поток. Вы просто берете JSON к примеру и меняете текст TextView. Все просто.

Отправить файл на сервер


Очень часто приходится отправлять файлы на сервер. Вновь головная боль? Никак нет. Библиотека GridmiAPI позволяет очень просто отправить файл без головной боли. Чуть больше строк чем в примере выше, но все так же компактно. Вот как можно отправить файл:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    
    super.onActivityResult(requestCode, resultCode, data);
    if (data == null || data.getData() == null) return;

    try {

        // Экземпляр запроса к серверу
        GridmiAPI.Request request = new GridmiAPI.Request("POST", "photo/add");

        // Создаем экземпляр многосоставного тела запроса
        GridmiAPI.Multipart multipart = new GridmiAPI.Multipart(getContentResolver());
        multipart.appendData("photo", data.getData());
        
        // Установить тело запроса
        request.setBody(multipart);
        
        // Отправить запрос
        GridmiAPI.onRequest(this, request, new GridmiAPI.Handler.OUT() {

            @Override
            protected void onSuccess(GridmiAPI.Response response) {
                try {
                    
                    // Получить результат с тела запроса
                    boolean result = ((JSONObject) response.getData()).getBoolean("result");
                    
                    // Уведомление
                    Toast.makeText(MainActivity.this, result ? "Загружено!" : "Ошибка!", Toast.LENGTH_LONG).show();
                    
                } catch (Exception exception) {
                    this.onFailed(exception);
                }
            }

            @Override
            protected void onFailed(Exception exception) {
                // Уведомление о текущем исключении
                Toast.makeText(MainActivity.this, exception.getMessage(), Toast.LENGTH_LONG).show();
            }

        }).start();

    } catch (Exception exception) {
        Toast.makeText(this, exception.getMessage(), Toast.LENGTH_LONG).show();
    }

}

Заключение


Мы рассмотрели самые популярные задачи, более детально Вы можете ознакомится на странице данной библиотеки на GitHub — GridmiAPI. Работать с данной библиотекой комфортно. Оцените сами. Спасибо Вам за то, что проявили интерес к данной статье!

Ссылки


Библиотека GridmiAPI
Документация / ReadMe.md
Теги:
Хабы:
Всего голосов 6: ↑6 и ↓0+6
Комментарии9

Публикации

Истории

Работа

Java разработчик
344 вакансии

Ближайшие события

19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн