УДК 004.4'22
Казаков И.А. студент 3 курс
факультет «Информационных технологий и информатики»
Якимчук А.В. студент магистратуры 1 курс факультет «Информационных технологий и информатики» Поволжский государственный университет телекоммуникаций и информатики
Россия, г. Самара
ПРИМЕНЕНИЕ ИНСТРУМЕНТА «RETROFIT» ПРИ РАЗРАБОТКЕ ПРОГРАМНОГО ОБЕСПЕЧЕНИЯ ПОД ОПЕРАЦИОННУЮ
СИСТЕМУ ANDROID
Аннотация: Данная статья посвящена проблемам при разработке программного обеспечения. В частности, будет поднята проблема по затрате большого количества сил и времени разработчиком при разработке программного продукта. И исследованию возможности применения инструмента «Retrofit 2» для отправки и получения ответа от сервера по API, который должен позволить сэкономить время и силы. Исследование будет вестись в рамках разработки мобильного приложения под операционную систему Android. Все примеры использования библиотеки «Retrofit 2» в рамках исследования будут приведены в статье. Ключевые слова: разработка, приложение, программный интерфейс приложения, репозиторий, retrofit.
Kazakov I.A. student 3 course
faculty of "Information Technology and Informatics"
Yakimchuk A. V. master student
1 course, faculty of "Information Technology and Informatics" Volga State University of Telecommunications and Informatics
Russia, Samara
APPLICATION OF THE "RETROFIT" TOOL IN THE DEVELOPMENT OF THE SOFTWARE UNDER THE ANDROID OPERATING SYSTEM.
Annotation: This article deals with problems in software development. In particular, the problem will be raised on the expenditure of a large amount of time and effort by the developer in developing a software product. And the study of the possibility of using the tool "Retrofit 2 " to send and receive a response from the server via the API, which should allow to save time and effort. The study will be conducted as part of the development of a mobile application for the Android operating system. All examples of the use of the library "Retrofit 2" in the framework of the study will be given in the article.
Keywords: development, application, application programming interface, repository, retrofit.
Главным предметом исследования в данной статье является библиотека «Retrofit 2». Согласно официальному сайту разработчика данного инструмента, «Retrofit 2» — это типобезопасный HTTP-клиент. Он является отличным инструментом для работы с API (application programming interface) в клиент-серверных приложениях.
Переходя к самой проблеме, необходимо уточнить, что без подобных библиотек разработчикам необходимо писать очень много кода с асинхронными потоками, обратными вызовами и другими низкоуровневыми и трудозатратными операциями.
Само приложение, в рамках которого будет проводиться исследование будет написано на языке программирования Kotlin и будет работать с сервисом Яндекс Переводчик.
Цель исследования - зафиксировать и сравнить время, затраченное на написание кода без каких-либо инструментов и с применением «Retrofit 2» и выяснить даёт ли «Retrofit 2» выигрыш по времени.
1. Исследования начнём с добавления зависимостей в файл build.gradle:
dependencies {
compile "com.squareup. retrofit2:retrofit:2.3.0 " compile "com.squareup.retrofit2:adapter-rxjava2:2.3.0" compile "com.squareup.retrofit2:converter-gson:2.3.0"
}
2. Следующим шагом необходимо добавить класс данных.
Первым таким станет класс, который является промежуточным хранилищем между данными, введёнными пользователем, и сервером.
data class TranslatedData( val id: String, val langTrans: String, val textForTrans: String, val translatedText: String
)
Вторым станет класс, в виде которого будет принят ответ от сервера.
data class Result ( val code: Int, val lang: String, val text: String
)
3. Следующим шагом нужно написать API интерфейс, который будет использоваться для формирования запросов и получения ответов. interface
YandexTranslatorApiService {
@GET("search/ TranslatedData ") companion object Factory { fun create(): YandexTranslatorApiService { val retrofit = Retrofit.Builder()
. addCallAdapterFactory(RxJava2CallAdapterFactory. create()) . addConverterFactory(GsonConverterFactory. create()) . base Url("https://translate.yandex. ru/") .build()
return retrofit.create(GithubApiService::class.java) } } }
4. Далее для большей абстракции процессов нужно создать репозиторий, который обрабатывает вызов YandexTranslatorApiService и формирует запрос.
class SearchRepository(val apiService: GithubApiService) { fun searchUsers(location: String, language: String): Observable<Result> { return apiService.search(query= "textForTrans:$langTrans +textForTrans:$ textForTrans ") }}
5. Напоследок необходимо ввести и передать данные в репозиторий для формирования запроса.
val repository = SearchRepositoryProvider.provideSearchRepository() repository.searchYandexTranslator ("ru-en ", "Hi!") .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers. io()) .subscribe ({ result ->
Log.d("Result", ${result.items.size}) }, { error ->
error.printStackTrace()}) Подведение итогов исследования:
1. Время, затраченное на написания серверной части без каких -либо инструментов, составило 90 минут;
2. Время, затраченное на написания серверной части с применением «Retrofit 2», составило 30 минут.
В заключении стоит отметить, что «Retrofit 2» даёт 3-ёх кратный выигрыш по времени. Это означает, что его применение при разработки программного продукта под операционную систему Android полностью оправданно.
Использованные источники:
1. http:// square. github. io/retrofit/
2. https://developer.android.com/guide/