Продукция стоит своих денег и сохраняет ваши деньги. Вот кадры с недавней презентации IBM в которой они сравнивают Total Cost of Ownership (TCO) для тысяч Mac и PC используемых внутри компании. Занятные цифры.
На мой взгляд отображение зависимостей между объектами не должно выполняться через построение иерархии объектов в URL, т.к. в дальнейшем это может привести к тому что объект будет доступен по нескольким уникальным URL, что в итоге противоречит принципам REST. И приводит к неприятным эффектам с кешированием.
Поясню на вашем же примере:
/api/users/ae43bc/cars/c7b45e
Допустим два пользователя могут иметь одну и ту же машину во владении (муж и жена) или более приземленный вариант разделяемый документ между двумя пользователями. Соответственно получаем один и тот же ресурс доступен по двум уникальным URL
/api/users/ae43bc/cars/c7b45e
/api/users/bc11aa/cars/c7b45e
В итоге клиенту придется кэшировать два объекта или анализировать содержимое сущности для оптимизации кэширования.
На мой взгляд более правильный метод реализации иерархии объектов как раз выполняется через принцип HATEOAS. Т.е. в указанном выше примере у обоих пользователей в содержимом сущности должна быть коллекция ссылок на машины которыми они владеют, e.g.:
Альтернатива – ручки. Этот проект пока единственный в своём роде. Может быть Apple присмотрится к подобным проектам и сделает открытое API для плагинов.
Поясню на вашем же примере:
/api/users/ae43bc/cars/c7b45e
Допустим два пользователя могут иметь одну и ту же машину во владении (муж и жена) или более приземленный вариант разделяемый документ между двумя пользователями. Соответственно получаем один и тот же ресурс доступен по двум уникальным URL
/api/users/ae43bc/cars/c7b45e
/api/users/bc11aa/cars/c7b45e
/api/users/ae43bc/docs/c7b45e
/api/users/bc11aa/docs/c7b45e
В итоге клиенту придется кэшировать два объекта или анализировать содержимое сущности для оптимизации кэширования.
На мой взгляд более правильный метод реализации иерархии объектов как раз выполняется через принцип HATEOAS. Т.е. в указанном выше примере у обоих пользователей в содержимом сущности должна быть коллекция ссылок на машины которыми они владеют, e.g.:
Описание должно быть вроде такого:
No plugin displayed until any project opened.
XCode 4.6.2, Mac OS 10.8.3