В чем разница между ресурсом и конечной точкой?


152

Я слышал, что и «ресурс», и «конечная точка» относятся к одному и тому же. Кажется, что ресурс - новый термин.

В чем разница между ними? Подразумевает ли «ресурс» RESTful-дизайн?

Ответы:


117

ОТДЫХ

Ресурс - это подмножество RESTful конечной точки .

Конечная точка сам по себе является местом , где услуга может быть доступна:

https://www.google.com    # Serves HTML
8.8.8.8                   # Serves DNS
/services/service.asmx    # Serves an ASP.NET Web Service

Ресурс относится к одному или более существительных, обслуживаемый, представленному в моде пространства имен, потому что это легко для людей , чтобы понять:

/api/users/johnny         # Look up johnny from a users collection.
/v2/books/1234            # Get book with ID 1234 in API v2 schema.

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

Запрос REST похож на предложение, состоящее из существительных (ресурсов) и глаголов (методов HTTP):

  • GET(метод) имя пользователя johnny(ресурс).
  • DELETE(метод) книга с идентификатором 1234(ресурсом).

Без ОТДЫХА

Конечная точка обычно относится к услуге, но ресурс может означать многое. Вот несколько примеров ресурсов, которые зависят от контекста, в котором они используются.

URL: унифицированный указатель ресурса

  • Может быть RESTful, но часто это не так. В этом случае конечная точка почти синоним.

Управление ресурсами

толковый словарь

  • В определениях предоставляют гораздо больше использования слова.

Что-то, что может вам помочь:

Библиотека была ценным ресурсом, и он часто ею пользовался.

Ресурсы - это природные вещества, такие как вода и древесина, которые имеют ценность для поддержания жизни:

[pl] Земля имеет ограниченные ресурсы, и если мы не перерабатываем их, мы их расходуем.

Ресурсы - это также ценные вещи, такие как деньги или имущество, которые вы можете использовать, когда они вам нужны:

[pl] У правительства нет ресурсов, чтобы нанять необходимое количество учителей.


Мораль

Термин « ресурс» по определению имеет множество нюансов. Все зависит от контекста, в котором он используется.


1
Я подозревал то же самое. Вы видели какие-либо ссылки, которые объясняют или документируют это?
B Seven

Добавлены ссылки, дающие представление о каждом из терминов.
cchamberlain 01

90

Термины ресурс и конечная точка часто используются как синонимы. Но на самом деле они означают не одно и то же.

Термин конечная точка фокусируется на URL-адресе, который используется для выполнения запроса.
Термин « ресурс» относится к набору данных , возвращаемому запросом.

Теперь к одному и тому же ресурсу часто могут обращаться несколько разных конечных точек .
Также одна и та же конечная точка может возвращать разные ресурсы в зависимости от строки запроса.

Давайте посмотрим на несколько примеров:

Различные конечные точки обращаются к одному и тому же ресурсу

Взгляните на следующие примеры различных конечных точек :

/api/companies/5/employees/3
/api/v2/companies/5/employees/3
/api/employees/3

Очевидно, что все они могли получить доступ к одному и тому же ресурсу в данном API.

Также можно полностью изменить существующий API. Это может привести к появлению новых конечных точек, которые будут обращаться к тем же старым ресурсам, используя совершенно новые и разные URL-адреса:

/api/employees/3
/new_api/staff/3

Одна конечная точка обращается к разным ресурсам

Если ваша конечная точка возвращает коллекцию, вы можете реализовать поиск / фильтрацию / сортировку, используя строки запроса. В результате все следующие URL-адреса используют одну и ту же конечную точку ( /api/companies), но могут возвращать разные ресурсы (или коллекции ресурсов , которые по определению являются ресурсами сами по себе):

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens

4
красиво объяснено 👍🏻
mangonights

1
«В результате все следующие URL-адреса используют одну и ту же конечную точку (/ api / companies), но могут возвращать разные ресурсы». Я не имею в виду обиду, но вы на самом деле просто придумываете здесь свою интерпретацию. С точки зрения REST это просто расположение разных ресурсов. Часть конечной точки, которую вы пытались учитывать, как другую часть URL-адреса. Это потому, что вы программист и думаете о том, как это реализовать, в виде фрагмента кода с одним методом действия. Представьте, что все эти разные URL-адреса маршрутизируются и обслуживаются с 4-х серверов. Все ли они являются одной конечной точкой? Теперь это не имеет смысла.
Люк Пуплетт

1
Причина, по которой строки запроса не являются частью конечных точек, заключается в том, что конечная точка не является частью языка REST или URL-адреса. Это просто не так. Вы думаете о кодировании управляющего веб-приложения. REST ничего не упоминает о параметрах запроса, сортировке и т. Д. Это просто не так. Если вы используете / orders для возврата коллекции и / orders? Top = 10, это просто красивые URL-адреса, это не более или менее RESTful, чем использование ссылок на / 32knre32nj для коллекции и ссылки на / abcd для десяти лучших заказов. Это просто идентификаторы ресурсов. URL-адреса не могут быть более или менее RESTful, а конечная точка - это не вещь.
Люк Пуплетт

Чтобы добавить, критически важной частью REST является связывание, так что потребителю не нужно заботиться об идентификаторах ресурсов, во многом меня не волнует, какой URL-адрес находится здесь за кнопкой Добавить комментарий. Когда мы перестанем думать о конечных точках и красивых URL-адресах и вместо этого перейдем к гиперссылкам, в которых URL-адрес является случайным, гораздо проще разработать хорошие API-интерфейсы на основе рабочего процесса для цели взаимодействия - я хочу найти компанию, чтобы x - ваш API был путешествием в x, где поиск находится в середине потока до конечного состояния приложения.
Люк Пуплетт 01

Нет строго канонического определения или спецификации для "конечной точки". Все сводится к технологии, к которой он относится. Показательный пример, Google "Что такое конечная точка?" и одна из главных статей по этому поводу - эта страница. Мы определяем его здесь на основе контекста, в котором оно использовалось. Все примеры в этом ответе относятся к RESTful, хотя сама конечная точка не обязательно является RESTful. См. SOAP.
cchamberlain 03

7

Возможно, мой ответ не лучший, но вот оно.

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

На мой взгляд, конечная точка - это термин TCP. Это связано с HTTP, потому что часть URL-адреса идентифицирует слушающий сервер.

Так что ресурс - это не новый термин, я не думаю, я думаю, что конечная точка всегда была незаконно присвоена, и мы понимаем это, когда мы начинаем думать о REST как о стиле API.

редактировать

Я писал об этом в блоге.

https://medium.com/@lukepuplett/stop-saying-endpoints-92c19e33e819


1

Согласно https://apiblueprint.org/documentation/examples/13- named-endpoints.html - это ресурс, являющийся «общим» местом хранения данной сущности - например, / customers / 30654 / orders, тогда как конечная точка - это конкретное действие. (Метод HTTP) по данному ресурсу. Таким образом, у одного ресурса может быть несколько конечных точек.


1
Простите @Dafka, но вы ошибаетесь. Конечная точка не имеет ничего общего с глаголом (методом HTTP, таким как GET, POST, PUT, DELETE, PATCH), который используется в нем.
Jpsy

0

Рассмотрим сервер, на котором есть информация о пользователях, миссиях и их бонусных баллах.

  1. Пользователи и бонусные баллы - это ресурсы
  2. Конечная точка может относиться к более чем одному ресурсу
  3. Конечные точки можно описать с помощью описания, полного или частичного URL-адреса.

введите описание изображения здесь

Источник: Конечные точки API против ресурсов


-1

1. Описание ресурса «Ресурсы» относятся к информации, возвращаемой API.

2. Конечные точки и методы Конечные точки указывают, как вы получаете доступ к ресурсу, в то время как метод указывает разрешенные взаимодействия (такие как GET, POST или DELETE) с ресурсом.

Дополнительная информация: 3. Параметры Параметры - это параметры, которые вы можете передать с конечной точкой (например, указание формата ответа или возвращаемой суммы), чтобы повлиять на ответ.

4. Пример запроса Пример запроса включает образец запроса с использованием конечной точки, показывающий некоторые настроенные параметры.

5. Пример и схема ответа В примере ответа показан пример ответа из примера запроса; схема ответа определяет все возможные элементы в ответе.

Источник- Ссылка на ссылку

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.