Вопрос по rest, api, terminology – Что такое REST-ресурсы?

37

Что такое ресурсы REST и как они связаны с именами ресурсов и их представлениями?

Я прочитал несколько статей на эту тему, но они были слишком абстрактными и оставили меня более смущенным, чем я был раньше.

Является ли следующий URL ресурсом? Если это так, как называется этот ресурс и каково его представление?

http://api.example.com/users.json?length=2&offset=5

GET-ответ URL должен выглядеть примерно так:

[
   {
      id: 6,
      name: "John"
   },
   {
      id: 7,
      name: "Jane"
   }
]
Да [15 символов] Esailija
похоже на json представление пользователей ... Esailija
@HaralanDobrev, как представление ресурса может быть самим ресурсом? Esailija
Означает ли это, что имя ресурсаusers? Emanuil Rusev
@Esailija, является ли представление самим ресурсом? И если у вас разные представления для одних и тех же данных, это разные ресурсы или одинаковые? Haralan Dobrev

Ваш Ответ

11   ответов
6

REST

Этот архитектурный стиль был определен вглава 5 диссертации Роя Т. Филдинга.

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

Resources

resource сама по себе является абстракцией и, по словам автора, ресурс может бытьany information that can be named, Доменные объекты приложения (например, человек, пользователь, счет, коллекция счетов и т. Д.) Могут быть ресурсами. Смотрите следующую цитату из диссертации Филдинга:

5.2.1.1 Resources and Resource Identifiers

The key abstraction of information in REST is a resource. Any information that can be named can be a resource: a document or image, a temporal service (e.g. "today's weather in Los Angeles"), a collection of other resources, a non-virtual object (e.g. a person), and so on. In other words, any concept that might be the target of an author's hypertext reference must fit within the definition of a resource. A resource is a conceptual mapping to a set of entities, not the entity that corresponds to the mapping at any particular point in time.

More precisely, a resource R is a temporally varying membership function MR(t), which for time t maps to a set of entities, or values, which are equivalent. The values in the set may be resource representations and/or resource identifiers. [...]

Resource representations

Документ JSONresource representation это позволяет вам представлять состояние ресурса. Сервер может предоставлять разные представления для одного и того же ресурса. Например, используя документы XML и JSON. Клиент может использоватьcontent negotiation запрашивать разные представления одного и того же ресурса.

Цитирую Филдинговую диссертацию:

5.2.1.2 Representations

REST components perform actions on a resource by using a representation to capture the current or intended state of that resource and transferring that representation between components. A representation is a sequence of bytes, plus representation metadata to describe those bytes. Other commonly used but less precise names for a representation include: document, file, and HTTP message entity, instance, or variant.

A representation consists of data, metadata describing the data, and, on occasion, metadata to describe the metadata (usually for the purpose of verifying message integrity). Metadata is in the form of name-value pairs, where the name corresponds to a standard that defines the value's structure and semantics. Response messages may include both representation metadata and resource metadata: information about the resource that is not specific to the supplied representation. [...]

Через HTTP заголовки запросов и ответов могут использоваться для обмена метаданными о представлении.

Resource identifiers

URL аresource identifier который идентифицирует / находит ресурс на сервере.


этоответ также может быть проницательным.

4

Передача состояния представления (REST) - это стиль архитектуры программного обеспечения для распределенных систем, таких как World Wide Web. Архитектура в стиле REST состоит из клиентов и серверов. Клиенты инициируют запросы к серверам; серверы обрабатывают запросы и возвращают соответствующие ответы. Запросы и ответы строятся вокруг передачи представлений ресурсов. Ресурсы - это набор адресуемых объектов, в основном файлов и документов, связанных с помощью URL. Как правильно указал выше Квентин, архитектура REST просто подразумевает, что вы используете HTTP-глаголы GET / POST / PUT / DELETE ...

6

Ресурс:

  • a noun
  • that is unique
  • and can be represented as data
  • and has at least one URI

Я более подробно расскажу о своем блоге,Что именно является ресурсом RESTful?

GET / POST / PUTorPatch / DELETE - этоnoun?.
2

Вы предоставили только то, что представляется относительными параметрами, а не "идентификатором". который является (или должен быть) конкретным. Помните, что операции get должны быть идемпотентными (то есть повторяемыми с одинаковым результатом).

-2

REST означает REpresentational State Transfer. Это способ передачи переменной информации из одного местоположения в другое. Распространенный способ сделать это - использовать JSON - способ форматирования ваших переменных, чтобы их можно было передавать без потери информации.

PHP, например, имеет встроенную поддержку JSON. Передача массива PHP вjson_encode($array) выведет строку в формате, который вы опубликовали (который, кстати, действительно является ресурсом REST, потому что он дает вам переменные и информацию).

В PHP размещенный вами массив будет выглядеть так:

Array (

    [0]=>Array (
        ['id']=>6;
        ['name']=>'John';
    )
    [1]=>Array (
        ['id']=>7;
        ['name']=>'Jane';
    )

)
Он спросил, что такое «Ресурсы» в Rest API.
4

Концептуально вы можете думать о ресурсе как о всем, что доступно в Интернете с помощью URL. Если вы придерживаетесь этого правилаhttp://api.example.com/users.json?length=2&offset=5 можно считать ресурсом

Мне нужен способ сослаться на это. Я хочу дифференцировать/users, который извлекает несколько элементов, из/users/123, который получает один. Emanuil Rusev
Как я должен ссылаться на «пользователей»? Правильно ли сказать, что «пользователи» такое тип данных ресурса? Emanuil Rusev
концептуально это не правильно. Например, изображение может быть ресурсом & quot; http :: //MyApplication/User/Image.jpg" какой будет тип данных? Надеюсь это имеет смысл
Как тогда я должен ссылаться на «пользователей»? Разве не имеет смысла признавать, что Image.jpg имеет тип & quot; image & quot ;? Emanuil Rusev
это всего лишь часть URL-адреса. Вы можете считать это только названием ресурса, если это помогает как для image.jpg
34

Причина, по которой статьи о ресурсах REST являются абстрактными, заключается в том, что концепция ресурса RESTis Аннотация. Это "в основном" любая вещь, доступ к которой осуществляется по URL, который вы предоставляете ". Итак, в вашем примере ресурсом будет список двух пользователей, начиная со смещения 5 в каком-то большем списке. Обратите внимание, что то, как реализован ресурс, является деталью, которая вас не волнует, если только вы не пишете реализацию.

Is the following URL a resource?

URL-адрес не является ресурсом, это метка, которая идентифицирует ресурс, это, если хотите, имя ресурса.

JSON - этоrepresentation ресурса.

По сути, URL - это конечная точка, где расположен ресурс, который вы хотите использовать.
Строго говоря,users это просто часть URL. Это не обязательно должно означать «значит» что-нибудь. Конечно, в действительности вы знаете, что это является частью модели данных приложения.
Как я должен ссылаться на «пользователей»? Правильно ли сказать, что «пользователи» такое тип данных ресурса? Emanuil Rusev
11

What are REST resources and how do they relate to resource names and resource representations?

REST не означает намного больше, чем правильное использование HTTP-глаголов (GET, POST, PUT, DELETE и т. Д.).

Is the following URL a resource?

Все URL-адреса представляют собой строки, которые сообщают компьютерам, где можно найти ресурс. (Отсюда и название: униформаResource Локатор).

+1. краткое, но полное объяснение того, что такое REST :)
0

Что такое ОТДЫХ?

REST - это стиль архитектуры, который обозначает передачу (T) состояния представления (RE) (T).

Что такое REST Resource?

Ресурс покоя - это данные, для которых мы хотим выполнить операцию (и). Таким образом, эти данные могут присутствовать в базе данных в виде записи (записей) таблицы (ов) или в любой другой форме. Эта запись имеет уникальный идентификатор, с которым ее можно идентифицировать как идентификатор сотрудника.

Теперь, когда эти данные запрашиваются по уникальному URL, какhttp://www.example.com/employees/123,so в конечном итоге данные или записи, которые присутствуют в базе данных, будут преобразованы в формат JSON / XML / Plain text посредством Rest Service и отправлены потребителю.

Таким образом, в основном здесь происходит РЕПРЕЗЕНТАЦИОННАЯ ПЕРЕДАЧА СОСТОЯНИЯ, при которой состояние данных, представленных в базе данных, передается в другой формат, который может быть JSON / XML или простым текстом.

Таким образом, в этом случае 1 сотрудник представляет 1 ресурс, к которому можно получить доступ по уникальному URL, напримерhttp://www.example.com/employees/123

Если мы хотим получить список всех ресурсов (сотрудников), мы сделаем: http://www.example.com/employees

Надеюсь, это поможет.

22

What’s a Resource?

A resource is anything that’s important enough to be referenced as a thing in itself. If your users might “want to create a hypertext link to it, make or refute assertions about it, retrieve or cache a representation of it, include all or part of it by reference into another representation, annotate it, or perform other operations on it”, then you should make it a resource.

Usually, a resource is something that can be stored on a computer and represented as a stream of bits: a document, a row in a database, or the result of running an algorithm. A resource may be a physical object like an apple, or an abstract concept like courage, but (as we’ll see later) the representations of such resources are bound to be disappointing. Here are some possible resources:

  • Version 1.0.3 of the software release
  • The latest version of the software release
  • The first weblog entry for October 24, 2006
  • A road map of Little Rock, Arkansas
  • Some information about jellyfish
  • A directory of resources pertaining to jellyfish
  • The next prime number after 1024
  • The next five prime numbers after 1024
  • The sales numbers for Q42004
  • The relationship between two acquaintances, Alice and Bob
  • A list of the open bugs in the bug database

Текст взят из книги «Reilly».Веб-сервисы RESTful& Quot ;.

13

URL никогда не является ресурсом, его именем или представлением.

URL просто сообщает, где находится ресурс, и вы можете вызывать GET, POST, PUT, DELETE и т. Д. По этому URL, чтобы вызвать ресурс.

Ответные данные - это ресурсы, а форма данных - их представление.

Допустим, ваш URL с заданными параметрами GET может выводить ресурс JSON - это JSON-представление этого ресурса. Хотя с другим флагом в GET он может отвечать теми же данными в XML - это будет еще одно представление того же ресурса.

РЕДАКТИРОВАТЬ: Из-за комментариев к OP и моего ответа я добавляю другие объяснения.

Так жеresource name считается «именем сценария», например, в этом случае этоusers.json в то время как это имя ресурса само описывает само представление ресурса - при вызове этого ресурса мы ожидаем, что ресурс находится в JSON, тогда как при вызове, например,users.xml мы ожидаем, что данные в XML.

  1. When I change the offset parameter in GET the response contains different data set - is it a new resource or its representation?
  2. When I define which columns are returned in response in GET, is it a different resource or different representation, or?
  1. Well, here the problem and answer are clear - we still call the same URL, the server responses with the data in the same form (still it is JSON), data still contains information about users - just the information itself has changed due to the new offset parameter. So it is obvious that it is still the same resource with the same representation and the same resource name as before.
  2. Second problem could be a little confusing. Though we are calling the same resource, though the resource contains the same data (just with only predefined column set) and though the data is in the same representation it could seem to us as a different resource. But due to the points in the paragraph above it is nor the different resource or different representation. Though the data set contains less information the requesting side (filtering this data set) should be considering this and behave accordingly. So again: it is the same resource with the same resource name and the same resource representation.
Представление такое же, как и ресурс, но он предоставил другой набор данных - но все же он содержит данные пользователей, все еще в том же формате данных. ТакNO на первые два вопроса иit's the same resource with the same representation на ваш третий вопрос.
Если у вас есть поля параметров GET, которые позволяют вам ограничить свойства, перечисленные для данного набора данных. Подобно:api.example.com/users/123?fields[]=id&fields[]=email  Затем:Is this a different resource? Is this a different representation? Or is this something else?

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