쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 객체지향
  • 자바
  • 프로젝트회고
  • Jetpack
  • 리사이클러뷰
  • 기초100제
  • 컴포즈
  • 백준
  • Adapter
  • DataBinding
  • 코딩테스트
  • Kotlin
  • 코틀린코테
  • Room
  • 상속
  • Android
  • 코드업100제
  • 코테
  • workmanager
  • 알고리즘
  • mvvm
  • 변수
  • 코틀린
  • 자료구조
  • 메소드
  • 배열
  • livedata
  • compose
  • AAC
  • ViewModel

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

[JETPACK개론] Retrofit
Android/JETPACK

[JETPACK개론] Retrofit

2022. 8. 24. 23:59

트러버 앱을 만들면서 Retrofit을 많이 이용하였는데 ViewModel 과 코루틴과 같이 사용해본 경험은 없어

아쉬움이 큰 프로젝트였다. 따라서 이번 젯팩 인프런 강의를 들으면서 다시 한번 복습하며 ViewModel과 코투린 같이 사용해볼 예정이다.

 

Retrofit2 관련해서 포스팅했던 링크를 첨부한다!!

개념은 링크를 통해서 보고! 이번 글에서는 젯팩 강의에서 진행했던 실습을 정리해보려고한다!

 

[Android] Retrofit2 사용하기

Retrofit2 ? -Rest API 통신 라이브러리 -Rest API 통신을 위해 구현된 스퀘어사의 OkHttp 라이브러리의 상위 구현체 -android와 서버 환경에서 HTTP API를 쉽고 안전하게 사용할 수 있도록 도와준다. Retrofit을..

ssongcode.tistory.com

먼저 서버가 없기 때문에 

 

JSONPlaceholder - Free Fake REST API

{JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. As of Oct 2021, serving ~1.7 billion requests each month.

jsonplaceholder.typicode.com

여기서 제공하는 api를 받아서 사용할 예정이다.

gradle파일에 retrofit 추가를 해주고, manifest파일에도 다음과 같이 권한을 추가해준다.

<uses-permission android:name="android.permission.INTERNET"/>
//retrofit2
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

이렇게 권한과 gradle파일에 추가했다면!! Retrofit 인스턴스를 생성하자.

object RetrofitInstance {
    val BASE_URL = "https://jsonplaceholder.typicode.com/"

    val client = Retrofit
        .Builder()
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build()

    fun getInstance() : Retrofit {
        return client
    }
}

서버에서 받은 api를 사용한다면, 서버에서 생성된 api 주소를 입력하면 된다!!

 

또한, 해당 링크를 통해서 반환값을 보니 다음과 같아 이에 맞추어 data class도 만들어주자!

반환값

data class Post (
    val userId : Int,
    val id : Int,
    val title : String,
    val body : String
)

또한, 해당 api에 접근하기 위해 interface를 생성해준다.

interface MyApi {
    @GET("posts/1")
    fun getPost1() : Call<Post>

    @GET("posts/{number}")
    fun getPostNumber(
        @Path("number") number : Int
    ) : Call<Post>

}

첫번째는 아이디1번째의 반환값을 반환하는 GET메소드이고, 밑은 id값을 유동적으로 바꿀 수 있는 GET메소드이다.

이 때 Path 변수로 변경을 해주어야하기 때문에 @Path를 적어준다!

api.getPostNumber(3).enqueue(object : Callback<Post>{
    override fun onResponse(call: Call<Post>, response: Response<Post>) {
        Log.d("API2", response.body().toString())
    }

    override fun onFailure(call: Call<Post>, t: Throwable) {
        Log.d("API2", "fail")
    }

})
val api = RetrofitInstance.getInstance().create(MyApi::class.java)

그리고 위와 같이 성공했을 때와 서버와 연결을 실패했을 때 로그를 찍어보았다!

결과값이 잘 로그에 찍힌 것을 알 수 있다!!

 

 

GitHub - SsongSik/JetPack_Android_Practice: Android practice using the Jetpack library

Android practice using the Jetpack library. Contribute to SsongSik/JetPack_Android_Practice development by creating an account on GitHub.

github.com

 

저작자표시 (새창열림)

'Android > JETPACK' 카테고리의 다른 글

[JETPACK개론] Coroutine / ViewModelScope  (0) 2022.08.26
[JETPACK개론] Retrofit의 CallBack Hell  (0) 2022.08.25
[JETPACK개론] DataBinding + ViewModel + LiveData  (0) 2022.08.21
[JETPACK개론] Map / SwitchMap  (0) 2022.08.20
[JETPACK개론] Fragment LiveData / LifeCycleOwner  (0) 2022.08.19
    'Android/JETPACK' 카테고리의 다른 글
    • [JETPACK개론] Coroutine / ViewModelScope
    • [JETPACK개론] Retrofit의 CallBack Hell
    • [JETPACK개론] DataBinding + ViewModel + LiveData
    • [JETPACK개론] Map / SwitchMap
    쏭식
    쏭식

    티스토리툴바