Android studio как работать с api
Перейти к содержимому

Android studio как работать с api

Retrofit на Android с Kotlin

image

Одним из самых захватывающих объявлений на Google I/O в этом году стала официальная поддержка Kotlin для разработки под Android.

Котлин на самом деле не новый язык, ему уже >5 лет и он довольно зрелый. Здесь вы можете получить более подробную информацию о языке

Я планирую поделиться некоторыми «практиками» использования Kotlin в разработке Android.

Retrofit — очень популярная библиотека для работы с сетью, и она широко используется в сообществе разработчиков. Даже Google использует его в своих образцах кода.

В этой статье я расскажу о том, как использовать REST API в ваших приложениях с помощью Retrofit + Kotlin + RxJava. Мы будем использовать API Github для получения списка разработчиков Java в Омске, Россия. Также, я затрону некоторые особенности языка программирования и расскажу о том, как мы можем применять их к тому, что мы, разработчики Android, делаем ежедневно — вызывать API.

0. Установка

В Android Studio 3.0 (Preview) теперь есть встроенная поддержка Kotlin, без ручной установки плагинов. Отсюда можно установить preview-версию.

1. Добавление зависимостей

Чтобы использовать Retrofit, вам нужно добавить зависимости в файл build.gradle:

RxJava2 поможет сделать наши вызовы реактивными.
GSON-конвертер будет обрабатывать десериализацию и сериализацию тел запроса и ответа.
RxAndroid поможет нам с привязкой RxJava2 к Android.

2. Создание классов данных

Как правило, следующим шагом является создание классов данных, которые являются POJO (Plain Old Java Objects) и которые будут представлять ответы на вызовы API.

С API Github пользователи будут представлены как объекты.

Как это будет выглядеть на Kotlin:

Классы данных в Котлине

Классы данных в Kotlin — это классы, специально разработанные для хранения данных.

Компилятор Kotlin автоматически помогает нам реализовать методы equals (), hashCode () и toString () в классе, что делает код еще короче, потому что нам не нужно это делать самостоятельно.

Мы можем переопределить реализацию по умолчанию любого из этих методов путем определения метода.

Отличной особенностью является то, что мы можем создавать результаты поиска в одном файле Kotlin — скажем, SearchResponse.kt. Наш окончательный класс ответа на поиск будет содержать все связанные классы данных и выглядеть следующим образом:

SearchResponse.kt

3. Создание API-интерфейса

Следующим шагом, который мы обычно делаем в Java, является создание интерфейса API, который мы будем использовать для создания запросов и получения ответов.

Как правило, в Java я хотел бы создать удобный «фабричный» класс, который создает службу API, когда это необходимо, и я бы сделал что-то вроде этого:

GithubApiService.java

Чтобы использовать этот интерфейс, мы делаем следующие вызовы:

Чтобы повторить тоже самое в Котлине, у нас будет эквивалентный интерфейс GithubApiService.kt, который будет выглядеть так:

GithubApiService.kt

Использование этого интерфейса и фабричного класса будет выглядеть так:

Обратите внимание, что нам не нужно было использовать «имя» сопутствующего объекта для ссылки на метод, мы использовали только имя класса.

Синглтоны и сопутствующие объекты в Котлине

Чтобы понять, какие сопутствующие объекты в Котлине есть, мы должны сначала понять, какие объявления объектов находятся в Котлине. Объявление объекта в Котлине — это способ, которым одиночный элемент создается в Котлине.

Синглтоны в Котлине так же просты, как объявление объекта и присвоение ему имени. Например:

Использование указанного выше объявления объекта:

Благодаря этому мы смогли создать поставщика, который предоставит нам экземпляр репозитория (который поможет нам подключиться к API Github через GithubApiService).

Объявление объекта инициализируется при первом доступе — так же, как работает Singleton.

Однако, объекты-компаньоны — это тип объявления объекта, который соответствует ключевому слову companion. Объекты Companion можно сравнить с статическими методами или полями на Java. Фактически, если вы ссылаетесь на объект-компаньон с Java, он будет выглядеть как статический метод или поле.

Сопутствующий объект — это то, что используется в версии GithubApiService.kt Kotlin выше.

4. Создание репозитория

Поскольку мы стараемся как можно больше абстрагировать наши процессы, мы можем создать простой репозиторий, который обрабатывает вызов GithubApiService и строит строку запроса.

Строка запроса, соответствующая нашей спецификации для этого демонстрационного приложения (для поиска разработчиков Java в Омске) с использованием API Github, — это местоположение: Omsk + language: Java, поэтому мы создадим метод в репозитории, который позволит нам построить эту строку, передавая местоположение и язык в качестве параметров.

Наш поисковый репозиторий будет выглядеть так:

Строковые шаблоны в Котлине

В блоке вышеприведенного кода мы использовали функцию Kotlin, называемую «String templates», чтобы построить нашу строку запроса. Строковые шаблоны начинаются со знака доллара — $ и значение переменной, следующей за ней, конкатенируется с остальной частью строки. Это аналогичная функция для строковой интерполяции в groovy.

5. Делаем запрос и получаем ответ API при помощи RxJava

Теперь, когда мы настроили наши классы ответов, наш интерфейс репозитория, теперь мы можем сделать запрос и получить ответ API с помощью RxJava. Этот шаг похож на то, как мы будем делать это на Java. В коде Kotlin это выглядит так:

Мы сделали наш запрос и получили ответ. Теперь можем делать с ним все, что захотим.

Полезные ссылки:

Заключение

Таким образом, в этом посте мы рассмотрели некоторые интересные возможности/свойства языка Kotlin и способы их применения при использовании Retrofit + RxJava для сетевых вызовов.

Introduction

In this post, I will explain how to call an API using Android Studio (Android app) as well as treating its return data. I’ll be focusing mostly on the technical part (like most of the posts I’ll publish here on my blog), however, and only for personal reasons, I will contextualize this scenario and tell you why I followed this solution, but it will be just a brief summary in case you want to know this little “adventure” of mine. If you are only interested in the technical solution please click here.

In one of my school projects¹, my team and I decided to create an Android application for the very first time. The project was basically a meal planner app where the user can create and manipulate recipes as well as organize his/her own weekly meal plan.

I’m printing here below a few screenshots to illustrate a little about the app. When these screenshots were taken the project was still in its initial state:

project image 1Weekly Plan Screen project image 2Recipes Screen

One of the requirements of the project was the use of an API to fetch food items inside USDA’s database (United States Department of Agriculture). I searched in a few technology forums trying to find some practical examples, but I didn’t have much success finding a satisfactory solution which matched with the scenario of this project. So I decided to look for any documentation on the Android website (developer’s section) and I found a relatively new solution (2013) using the Volley library. This is a good solution for low payloads HTTP requests, which are usually used to populate the UI, and this was the perfect solution I was looking for.

In the following chapters, I will explain in details how to make HTTP requests using Volley. So let’s go to the solution already!

If you’d like to check the project’s source code, please follow the GitHub link²

(¹) Langara College: Web and Mobile App Development — WMDD4980 Project 2

(²) The available source code of the project is only a demo of the app, for obvious reasons I won’t share the whole code of the app.

Contents

1. Know The API You Are Going to Use

Firstly, it is necessary to know the API you will use. In this case, it is the USDA’s database, you can find its documentation following this link.

Usually, an API requires an access key, so you will probably need to sign up on their website and justify the use of the API, but it should be something very simple.

It’s very important to know about the API’s inputs and outputs as well, so I enforce that checking its documentation is crucial for the correct use and avoiding possible crashes.

2. Hands On (coding)

2.1. Adding Volley & Internet Permission

To use Volley’s tools, we need to add its library first. The easiest way to do that is by adding the dependency inside the file build.gradle .

Next, it’s necessary to add internet permission to your app, so add the following code between the tag manifest , inside the file AndroidManifest.xml

2.2. Creating the Queue Object

Now we need to create the object which will manage the communication between the app and the API, so we create the RequestQueue object.

For our solution, we’ll make use of the Volley.newRequestQueue .

2.3. Creating The String Request

The StringRequest object represents the data to be sent (method and URL), as well as its treatment (logic) in case of success and error of the invoked API.

2.3.1. Setting The Success and Error Returns

In the case of this project, I decided to create a separate method that returns a StringRequest object, so that way I wasn’t “polluting” the event method a lot.

2.4. Calling The API

Now that we defined the rules and procedures to the API’s return, we just need to make the call of itself. The operation is as simple as adding the StringRequest to the queue .

3. Conclusion

I found the usage of the Volley library very simple and easy to use. For a simple query like the example above, this solution performed at a good speed and it seems stable. If you need to make a simple request to retrieve light amounts of data, then this is probably a good way to call for the API you want.

You can also find some good explanations about the Volley library on YouTube here in this link.

How to implement REST API in Android using Retrofit in Kotlin (Part-1)

While developing an Android application we have to communicate to servers and databases for data. Fetching, creating and manipulating of data from android can be done by using REST APIs. In this article I am going to show you how to implement these APIs in an Android application using Retrofit library.

This series is divided into 3 parts: Part 1 covers the implementation of GET request, Part 2 covers POST request and the Part 3, the final one covers the DELETE request.

To switch to next parts scroll down to bottom of this article.

For this series, I am using https://jsonplaceholder.typicode.com/ for sample REST APIs.

First of all create a project in Android Studio.

After creating the project, add some libraries to app/build.gradle file.

After that, add this also

Now I will arrange my file structure according to MVVM(Model view viewmodel architecture)

Now we are set to jump right into code!

First let’s create our Model class, i.e; PostModel

Now let’s setup the network classes which will help us to handle APIs in which we will create our Retrofit client.

Next we will make an interface called ApiInterface

Now lets see the function to fetch all the posts.

We will call this method from our viewmodel class.

Next we are going to make layout for main activity. I have added a recyclerview in it.

Now create a layout for a particular item of a post.

In our Main Activity, we will initialize our our Recyclerview Adpater and display the fetched result.

Now lets take a look at our adapter till now.

Now we can see our fetched data in our device.

Hence, we have implemented our first REST API via GET request in Android and displayed it using Retrofit.

Next we will create a post using retrofit via POST request in the next story. Click this link to reach there (PART 2).

Добавить комментарий

Ваш адрес email не будет опубликован.