УСПОКОИТЕЛЬНЫЙ дизайн, как назвать страницы вне CRUD и др.?

Я работаю над сайтом, который имеет довольно много страниц, которые выходят за пределы моего ограниченного понимания УСПОКОИТЕЛЬНОГО дизайна, который является по существу:

Create, Read, Update, Delete, Show, List

Вот вопрос: что такое хорошая система для маркировки действий/маршрутов, когда страница аккуратно не попадает в CRUD/шоу/список? Некоторые мои страницы имеют информацию о нескольких таблицах сразу. Я создаю сайт, который дает некоторым клиентам 'основную базу' после того, как они входят в систему. Это НЕ дает им информации о себе так, это не должно быть, например,/customers/show/1. Это действительно имеет информацию о компаниях, но существуют другие страницы на сайте, которые делают это по-другому. Что Вы делаете, когда у Вас есть эти ситуации? Эту 'основную базу' показывают клиентам, и она главным образом имеет информацию о компаниях (но не исключительно так).

Второй случай: у Меня есть таблица под названием 'Соответствия' промежуточные клиенты и компании. К этим соответствиям получают доступ совершенно другими способами на различных частях сайта (различные разметки, различные листы CSS, различные типы пользователей, получающих доступ к ним, и т.д. Они не могут ВСЕ быть соответствиями/шоу. Что лучший способ состоит в том, чтобы маркировать другими?

Большое спасибо. =)

14
задан sscirrus 19 May 2010 в 08:04
поделиться

4 ответа

Я, конечно, не эксперт, но если вы переосмыслите свои ресурсы и будете думать о них более строго как о «существительных» или, по крайней мере, о списках данных, может быть легче вписать любое желаемое действие в GET, POST, PUT и DELETE. Например, у вас есть ресурс / customers / , который предположительно может иметь ресурс / customers / {username} / для каждого клиента. Может быть, это дает им информацию о себе. Вы можете использовать / homebases / {username} / или / customers / {username} / homebase / в качестве ресурсов вашей домашней базы. Предположительно, вы получите доступ к этому ресурсу домашней базы в основном через GET и POST, если есть что-то для обновления (чего я бы не ожидал на домашней базе или на панели инструментов, поскольку это совокупный ресурс).

Для «сопоставлений» вы можете использовать что-то вроде / matchings / {customer}, {company} / (да, запятые и точки с запятой разрешены. Запятые обычно означают, что две части зависят от порядка и точка с запятой означает независимый от порядка, хотя в этом нет никаких правил). Из этого ресурса вы можете использовать GET для чтения, отображения и перечисления любых данных, которые вам нужны (включая необязательные параметры запроса, переданные как тело запроса GET), POST для обновления, PUT для создания и DELETE для удаления. Используя параметры, переданные в GET, вы также можете запрашивать разные представления одних и тех же данных. Конечно, у вас могут быть подресурсы этого соответствия, например / matchings / {customer}, {company} / invoices / {invoice #} / .

Мне, кстати, понравилась книга «RESTful Web Services» (2007 O'Reilly).

Я надеюсь, что это имеет смысл и полезно. =)

7
ответ дан 1 December 2019 в 14:43
поделиться

Я считаю, что агрегированные и составные представления представляют собой серьезную проблему. Мне пришлось столкнуться с проблемой домашней страницы , которая шла вразрез со всем, что я знал о RESTful.

Мое решение заключалось в том, чтобы рассматривать домашнюю страницу или информационную панель как ресурс сам по себе, но как ресурс, в котором имеют смысл только операции GET. POST / PUT / DELETE с домашней страницы, как обычно, были направлены на определенные ресурсы.

Сопоставление, напротив, кажется более простой проблемой. Это похоже на простое сопоставление клиентов и компаний из вашего описания, и вы можете параметризовать его на основе параметров строки запроса.

/matchings?companies=X,Y,Z&locations=NY,CA,TX
3
ответ дан 1 December 2019 в 14:43
поделиться

Под дизайном RESTful я предполагаю, что вы имеете в виду веб-службы RESTful, поскольку архитектура на основе REST имеет гораздо более широкий смысл.

Главное, что нужно учитывать, это то, что архитектуры на основе REST полагаются на протокол HTTP практически во всех случаях. Поскольку HTTP определяет набор методов, иногда эти методы используются для создания так называемых веб-служб RESTful.

Но веб-службы RESTful не следуют никаким конкретным стандартам (в отличие от SOAP). Обычно используется:

  • GET - для получения существующих элементов
  • POST - для создания новых элементов
  • PUT - для обновления существующих элементов
  • DELETE - для удаления существующих элементов

Создание, чтение, обновление и удаление (CRUD) являются основными функциями любого постоянного хранилища.

Легко видеть, что в обычных веб-сервисах RESTful каждый метод HTTP используется для соответствия одной из основных функций, но суть в том, что это не должно быть так.

Есть и другие вещи, которые следует учитывать, отображение URL-адресов - одно из них (поскольку это проблема вашего вопроса), безопасность - другое. Запросы POST отправляют содержимое запроса в теле HTTP (которое может быть зашифровано), но запросы GET отправляют его в URL-адресе, видимом для всех.

Если кто-то хочет разработать безопасную (зашифрованную) веб-службу RESTful, можно сделать все запросы HTTPS POST, а затем указать в запросе, какую из операций CRUD нужно выполнить и на каких ресурсах.

Можно также расширить концепцию CRUD до более широкого диапазона, фактически, почти в каждом приложении это необходимо.

Помните, что CRUD - это всего лишь четыре основных операции, на которых могут развиваться все остальные действия. Нет стандарта, которому вы должны следовать, вы можете указать свой собственный протокол в соответствии с тем, что имеет смысл в вашем контексте, и учитывая все соответствующие соображения (безопасность, URL-адреса и т. Д.).

В отношении вашего вопроса вы можете иметь свои действия, такие как show_by_x, show_by_y и т. д. Полиция REST не собирается вас арестовывать: -)

2
ответ дан 1 December 2019 в 14:43
поделиться

REST и ORM - это две разные вещи, поэтому даже если у вас есть модель User, вам необходимо иметь ресурс users. Ресурсы должны управляться на уровне контроллера rails

Считайте ресурсы модулями/секциями

Пример: вы можете захотеть, чтобы ваши пользователи попадали на страницу приборной панели после входа в систему (и скажем, у вас есть две категории пользователей - администраторы и обычные пользователи), поэтому вы можете иметь два ресурса, а именно

admin_dashboard uer_dashboard

и оба могут иметь только действие чтения

Второй случай:

рассмотрите возможность иметь что-то вроде примера выше (разные ресурсы для разных уровней пользователей), если это возможно

Я не гуру REST, но надеюсь это поможет :D

спасибо, sameera

0
ответ дан 1 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: