Лучший подход к использованию строк URL для вызовов API - PullRequest
0 голосов
/ 25 октября 2019

У нас была дискуссия с коллегами, и мы не пришли к единому мнению. Я был бы признателен за хорошие аргументы и за реальный опыт использования.

Вопрос:

Каков лучший подход для объявления пути URL, например, в приложении Android с Retrofit?

  1. Использование статической строковой константы из отдельного файла для всех элементов пути в URL.
    @GET("$VIDEOS/$PUBLIC/{$SLUG}")
    fun getVideos(@Path(SLUG) slug: String, @Query(LIMIT) limit: Int): List<Video>
Использование обычной строки.
    @GET("videos/public/{slug}")
    fun getVideos(@Path("slug") slug: String, @Query("limit") limit: Int): List<Video>

1 Ответ

0 голосов
/ 25 октября 2019

Константы могут быть действительно мощными, если начальная строка используется в разных областях кодовой базы, например, если у вас есть два разных URL с одинаковым путем $VIDEOS, так как вы можете редактировать все это сразу. Однако создание констант только потому, что они «могут» использоваться в разных местах, может быть кошмаром для поддержания. Например, как указано выше, два API используют путь $VIDEOS, но изменяется только одно.

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

private const val SLUG = "thing"

@GET("videos/public/{$SLUG}")
fun getVideos(@Path($SLUG) slug: String, @Query("limit") limit: Int): List<Video>

Как это используетсяв одном вызове API, но в двух областях. Главное, что вы можете перевести вещи в константы, но только если это имеет смысл. Старайтесь не абстрагироваться от всего API, так как когда вы это делаете, изменение и обслуживание будет сложнее.

Когда у меня возникают сомнения, я также возвращаюсь к примерам в самой библиотеке. Документация по модернизации Приведенные здесь примеры не имеют никаких констант.

...