Представьте себе табличное представление, в котором перечислены некоторые рецепты. Каждый раз, когда пользователь нажимает на рецепт, загружается новый вид таблицы с перечнем ингредиентов рецепта.
Чтобы получить информацию, я асинхронно вызываю REST API, используя:
NSURLRequest *request = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:30];
Когда пользователь нажимает на рецепт, вызывается API для получения ингредиентов рецепта. Однако, как только в новом представлении (в котором перечислены ингредиенты) и до получения ответа, пользователь может вернуться и выбрать новый рецепт.
В этом случае я получу два ответа; по одному на каждый запрос. Проблема в том, что я не знаю, для какого запроса этот ответ, и я обновлю интерфейс с неправильным содержанием из неправильного ответа.
Я не уверен, какой подход правильный в этом случае. Я думаю о включении в ответ каждого параметра запроса. Так, если я, например, использую API для поиска определенного термина, мы скажем «foo», я включу термин также в ответ, например:
Запрос:
http://domain.com/api/search?term=foo
Ответ
{
"requestType": "search",
"term": "foo",
"result" : "a foo result"
}
Мне кажется странным включать каждый параметр запроса в каждый ответ, но это единственное решение, которое я нашел для создания API без состояния, готового к вызову асинхронным.
¿Есть ли другой способ сделать это?
(Я использую шаблон делегата, присваивающий объект каждому запросу, который вызывается при получении ответа. В примере с рецептами проблема заключается в том, что представление таблицы ингредиентов используется повторно, перечислены ингредиенты каждого рецепта времени) .