Facciamo un esempio di un endpoint API generico che appare come segue:
https://api.imgur.com/3/gallery/{section}/{sort}/{window}/{showViral}/{page}
Le condizioni su questo endpoint sono le seguenti:
- Gli argomenti sono facoltativi. I valori predefiniti verranno utilizzati se non forniti.
- Tutti gli argomenti precedenti devono essere forniti per utilizzare un argomento. Quindi, in questo esempio, se dovessi ottenere i post della pagina n. 2, devo fornire i valori di sezione, ordinamento, finestra e showViral.
Sto cercando di creare un wrapper C # attorno a questi endpoint. Il mio metodo ha un aspetto simile al seguente:
public static async Task<List<Image>> GetGallery(Section? section = null, Sort? sort = null, Window? window = null, bool? showViral = null, int? page = null)
{
string uri = "gallery";
if (section != null)
{
uri += "/" + section.ToString().ToLower();
if(sort != null)
{
uri += "/" + sort.ToString().ToLower();
if(window != null)
{
uri += "/" + window.ToString().ToLower();
if (showViral != null)
{
uri += "/" + showViral.ToString();
if (page != null)
{
uri += "/" + page;
}
}
}
}
}
JObject response = await NetworkHelper.ExecuteRequest(uri);
return response["data"].ToObject<List<Image>>();
}
Non sono davvero contento di questa implementazione. Questo codice sembra molto brutto. Qualche idea su come posso migliorare questo?