2009-09-04 3 views
0

Это общий вопрос, поэтому я не буду называть API-интерфейс сайта, на который я ссылаюсь.Где поместить данные в приложение, использующее удаленный db через API?

ОК, скажем, API дает мне доступ к некоторым объектам (книгам/другим продуктам). Я хочу дать своим пользователям возможность «хранить» некоторые из этих объектов в db моего приложения, чтобы позже они могли «пересмотреть» их снова.

Мой вопрос касается глаголов «магазин» и «обзор». (Конечно, кэширование будет использоваться, когда это возможно, вместо того, чтобы тянуть данные из удаленной БД)

1) Что я должен действительно магазин

а) только ключ API конкретным, то есть достаточно извлекать другие данные объекта из API при просмотре

b) Ключ API + другой уникальный идентификатор (например, ISBN для книг или имя, если нет другого «естественного» идентификатора). Моя идея заключается в том, что позже это позволит мне изменить использованный API, если это необходимо.

c) Все данные объекта (например, автор, производитель и т. Д.). То есть, используйте API только для отображения результатов поиска.

2) Если да, то к 1 а) или б), как мне организовать модель товара? Должен ли я

а) отделите интерфейс для API в отдельный класс (как RemoteItem) или я должен

б) просто определить методы внутри пункта, которые обмениваются данными прозрачно с удаленного сайта?

c) или модуль для включения?

ответ

0

1). Сначала техническая мысль: если бы вы контролировали API, то вы могли бы определить степень доверия, которое у вас есть в logenvity ключа, специфичного для API. В этом случае вы фактически не контролируете его, поэтому я бы предпочел подход «пояса и фигурных скобок», также замаскировал ISBN (я не знаю, предлагают ли другие медиа аналогичные уникальные идентификаторы). Это просто попытка справиться с потенциальными изменениями в API, который вы не контролируете.

Но тогда рассмотрим удобство использования. Если вы задержите некоторые другие данные, вы можете не только учитывать сдвиги в API, вы можете более легко предложить другую функцию, например, поиск похожих предметов или поиск другого сайта для целей сравнения цен.

Таким образом, моя склонность заключается в том, чтобы спрятать немного больше информации - например, для авторов книг и названия.

2). Я не уверен, что я точно понимаю альтернативы. Вопрос в том, имеет ли элемент сам логика «постоянства» для вызова API, или у вас есть объект библиотеки, который извлекает элементы? Мой инстинкт заключается в том, что вам понадобится библиотека для управления поиском, она может инкапсулировать информацию о доступе к одному или нескольким удаленным сайтам.

Смежные вопросы