абстрактные сервисные интерфейсы - PullRequest
0 голосов
/ 30 января 2020

Допустим, у меня есть два сервисных интерфейса (с использованием модернизации).

interface ReminderService {
    @GET("reminder" + "/list")
    Observable<Response<Reminder>> getList(@HeaderMap Map<String, String> headerMap);

    @POST("reminder" + "/ins")
    Observable<Response<Reminder>> ins(@HeaderMap Map<String, String> headerMap);
}

interface FileService {
    @GET("file" + "/list")
    Observable<Response<Reminder>> getList(@HeaderMap Map<String, String> headerMap);

    @POST("file" + "/ins")
    Observable<Response<Reminder>> ins(@HeaderMap Map<String, String> headerMap);
}

единственное различие между этими двумя интерфейсами - это tableName напоминание и файл

и поскольку аннотации GET и POST не принимают методы внутри.

есть ли способ их абстрагировать?

1 Ответ

1 голос
/ 30 января 2020

Пожалуйста, проверьте этот код.

@GET("{tableName}/list")
fun getList(@Path("tableName") path : String,
            @HeaderMap headerMap: Map<String, String>
): Observable<Response<Reminder>>

@POST("{tableName}/ins")
fun ins(@Path("tableName") path : String,
        @HeaderMap headerMap: Map<String, String>
): Observable<Response<Reminder>>

Теперь вот код, откуда вы должны вызывать этот метод.

getList("reminder", headerMap)
getList("file", headerMap)

Надеюсь, это поможет.

...