마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Retrofit api 와 소스분석중인데 모르는 부분이있어서 질문드립니다.

0 추천

vmmv을 요즘 코틀린으로 공부중인데

제가 이런 문법은 잘 보지 않아서 ㅜㅜ 잘 모르겠습니다.. 도와주세요..

// 发现 - banner
@ApiFactory.BaseUrl("https://banner-storage-ms.juejin.im")
interface BannerStorage {
    @GET("v1/get_banner")
    fun getBanner(@Query("position") position: String,
                  @Query("page") page: Int = 0,
                  @Query("pageSize") pageSize: Int = 20,
                  @Query("platform") platform: String = "android"): Observable<Response<BannerListBean>>
}

 

object ApiFactory {
    /**
     * baseUrl of each Api
     */
    @Target(AnnotationTarget.CLASS)
    @Retention(AnnotationRetention.RUNTIME)
    annotation class BaseUrl(val value: String)

    var okhttpClient = OkHttpFactory.client

    private val mRetrofitBuilder: Retrofit.Builder by lazy {
        Retrofit.Builder()
                .client(okhttpClient)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
    }

    fun <T> getApi(clazz: Class<T>): T {
        val baseUrl = clazz.getAnnotation(BaseUrl:: class.java).value
        if(baseUrl.isEmpty())
            throw IllegalArgumentException("@BaseUrl of ${clazz.simpleName} is empty")

        Log.e("Test"," : " +baseUrl +" / " +clazz +" / " +mRetrofitBuilder.baseUrl(baseUrl).build().create(clazz))
        return mRetrofitBuilder.baseUrl(baseUrl).build().create(clazz)
    }
}

 

이와 같이 오브젝트를 @로 잡아두는데.. 사실ㅈ ㅔ가 @ 뜻은 잘 모르고...  @null처리나  오버라이드정도만 그냥 있길래 봐왔지..

이게 무슨기능하는지 무엇이라 부르는지 잘 모르겠습니다 ㅜㅜ

그리고 BaseUrl 이렇게 유알엘을 적어두면 이 리스폰스가 어디로 가고...

 

@GET은 ... 무엇인지.. ㅜㅜ 잘 모르겠습니다..

자바에서 코틀린으로 넘어가니...  간편히 표현할 수있어서 좋은데.. is.. by.. 이런 부분에 뜻을 몰라서 하나씩 공부해야 하니.. ㅜㅜ 빠르게 넘어가려고 했는데 너무 힘드네요..

주저리 주저리.. 말이 길었네요.. 혹시 이부분좀 해석해주시면 감사하겠습니다...

니쿠네임이다 (520 포인트) 님이 2018년 3월 27일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...