2017-09-23 2 views
1

Est-il possible de créer une API de retrofit où le chemin, les champs et ses valeurs proviennent d'un fichier property situé dans le dossier assets? Exemple:Comment créer une API Retrofit à partir d'un fichier de propriétés?

interface StatusAPI { 

    @FormUrlEncoded 
    @POST("api path") 
    fun readRawHtml(
      @Field("arg1 key") arg1: String = "arg1 value", 
      @Field("arg2 key") arg2: String = "arg2 value", 
      @Field("arg3 key") arg3: String = getArg3Value(), 
    ): Single<String> 

    private fun getArg3() = "arg3 value" 

} 

url.path = /path%20to%20api 
form.key.arg1 = arg1key 
form.value.arg1 = arg1value 
form.key.arg2 = arg2key 
form.value.arg2 = arg2value 
form.key.arg3 = arg3key 
form.value.arg3 = arg3value 

PS: Je connais lire le fichier de propriétés et de prendre ses valeurs, aussi j'utilise Dagger2 comme conteneur DI, si l'API de mise à niveau était une classe et je pouvais injecter un composant capable de lire la Les fichiers de propriétés à l'intérieur seraient parfaits, mais comme l'API Retrofit est intégrée dans une interface, je ne sais pas si ce que je veux peut être accompli.

+0

Vous pouvez faire pour manipuler de l'URL dynamiquement. Vois ma réponse. –

Répondre

0

Ce n'est pas possible. Retrofit utilise un proxy dynamique et nécessite une interface.

+0

C'était juste par curiosité. Donc, je suppose que la meilleure option serait d'utiliser un fichier constant où toutes les valeurs sont initialement définies –

+0

Quoi? Il utilise un proxy dynamique et non un traitement d'annotation. Dans tous les cas, vous avez besoin d'une interface pour que cela fonctionne. – EpicPandaForce

+0

@EpicPandaForce ok, désolé pour cela. J'ai mis à jour la réponse. –