Укажите IP-адрес вашей системы, имеющей интернет в URL-адресе. например: 190.168.1.90 это работает для меня
Это программирует, где архитектура Вашей системы соответствует стиль REST размеченный Roy Fielding в его тезис . Так как это - архитектурный стиль, который описывает сеть (более или менее), много людей интересуется им.
Бонусный ответ: Нет. Если Вы не изучаете программную архитектуру как академик или разрабатываете веб-сервисы, нет действительно никакой причины услышать термин.
Я вижу набор ответов, в которых говорится, что помещение всего о пользователе 123 в ресурсе "/user/123" УСПОКОИТЕЛЬНОЕ.
Roy Fielding, который ввел термин, говорит , API REST должны управляться гипертекстом . В частности, "API REST не должен определять зафиксированные имена ресурса или иерархии".
Поэтому, если Ваш путь "/user/123" является hardcoded на клиенте, это не ДЕЙСТВИТЕЛЬНО УСПОКОИТЕЛЬНО. Хорошее использование HTTP, возможно, возможно, нет. Но не УСПОКОИТЕЛЬНЫЙ. Это должно прибыть из гипертекста.
REST использует различные методы HTTP (главным образом ДОБИРАЮТСЯ/ПОМЕЩАЮТ/УДАЛЯЮТ) управлять данными.
Вместо того, чтобы использовать определенный URL для удаления метода (говорят, /user/123/delete
), Вы отправили бы УДАЛИТЬ запрос к /user/[id]
URL, чтобы отредактировать пользователя, получить информацию о пользователе, Вы отправляете ПОЛУЧИТЬ запрос к /user/[id]
, Например, вместо этого ряд URL, которые могли бы быть похожими на некоторые следующие..
GET /delete_user.x?id=123
GET /user/delete
GET /new_user.x
GET /user/new
GET /user?id=1
GET /user/id/1
Вы используете HTTP "глаголы" и имеете..
GET /user/2
DELETE /user/2
PUT /user
УСПОКОИТЕЛЬНОЕ программирование о:
Create
, Retrieve
, Update
, Delete
становится POST
, GET
, PUT
, и DELETE
. Но REST не ограничен HTTP, это - просто обычно используемый транспорт прямо сейчас. последний является, вероятно, самым важным с точки зрения последствий и полной эффективности REST. В целом, большинство УСПОКОИТЕЛЬНЫХ обсуждений, кажется, центрируется на HTTP и его использовании от браузера и что нет. Я понимаю это R. Fielding ввел термин, когда он описал архитектуру и решения тот вывод к HTTP. Его тезис больше об архитектуре и способности кэша ресурсов, чем это о HTTP.
, Если Вы действительно интересуетесь тем, что Архитектура RESTful и почему она работает, читайте его тезис несколько раз и читайте целая вещь не просто Глава 5! Затем изучите , почему DNS работает . Читайте об иерархической организации DNS и как работают направления. Тогда считайте и рассмотрите, как кэширование DNS работает. Наконец, прочитайте Спецификации HTTP ( RFC2616 и RFC3040 в особенности) и рассмотрите, как и почему кэширующиеся работы способ, которым он делает. В конечном счете это просто нажмет. Заключительное открытие для меня было, когда я видел подобие между DNS и HTTP. После этого понимая, почему SOA и Интерфейсы передачи сообщений являются масштабируемыми запусками для нажатия.
я думаю, что самый важный прием к пониманию архитектурной важности и последствий производительности УСПОКОИТЕЛЬНОГО и Совместно использованный Ничто архитектура не должно стараться не становиться одержимым деталями реализации и технологией. Концентрат на том, кто владеет ресурсами, кто ответственен за создание/поддержание их, и т.д. Тогда думает о представлениях, протоколах и технологиях.
REST является базовым принципом архитектуры сети. Удивительной вещью о сети является то, что клиенты (браузеры) и серверы могут взаимодействовать сложными способами без клиента, знающего что-либо заранее о сервере и ресурсах, которые это размещает. Ключевое ограничение состоит в том, что сервер и клиент должны оба договориться эти медиа используемый, который в случае сети является HTML .
API, который придерживается принципов [1 133], REST не требует, чтобы клиент знал что-либо о структуре API. Скорее сервер должен предоставить любую информацию, клиент должен взаимодействовать с сервисом. HTML-форма является примером этого: сервер определяет местоположение ресурса и обязательных полей. браузер не знает заранее, где отправить информацию, и это не знает заранее что информацию отправить. Обе формы информации полностью предоставляются сервером. (Этот принцип называют HATEOAS: Гиперсреда Как Механизм Состояния приложения .)
Так, как это относится HTTP, и как он может быть реализован на практике? HTTP ориентирован вокруг глаголов и ресурсов. Эти два глагола в основном использовании GET
и POST
, который я думаю, что все распознают. Однако стандарт HTTP определяет несколько других такой как [1 110] и DELETE
. Эти глаголы тогда применяются к ресурсам, согласно инструкциям, предоставленным сервером.
, Например, Давайте предположим, что у нас есть пользовательская база данных, которой управляет веб-сервис. Наш сервис использует пользовательскую гиперсреду на основе JSON, для которого мы присваиваем mimetype application/json+userdb
(Могло бы также быть application/xml+userdb
и application/whatever+userdb
- много типов среды могут поддерживаться). Клиент и сервер были оба запрограммированы для понимания этого формата, но они ничего не знают друг о друге. Как [1 124] указывает Roy Fielding :
API REST А должен потратить почти все свое описательное усилие в определении типа (типов) среды, используемого для представления ресурсов и управления состоянием приложения, или в определении расширенных имен отношения и/или поддерживающей гипертекст разметки для существующих стандартных типов среды.
запрос А на основной ресурс /
мог бы возвратить что-то вроде этого:
Запрос
GET /
Accept: application/json+userdb
Ответ
200 OK
Content-Type: application/json+userdb
{
"version": "1.0",
"links": [
{
"href": "/user",
"rel": "list",
"method": "GET"
},
{
"href": "/user",
"rel": "create",
"method": "POST"
}
]
}
Мы знаем из описания наших медиа, что можем найти информацию о связанных ресурсах от разделов названной "ссылками". Это называют средства управления Гиперсредой . В этом случае мы можем сказать от такого раздела, что можем найти список пользователей путем выполнения другого запроса для [1 116]:
Запрос
GET /user
Accept: application/json+userdb
Ответ
200 OK
Content-Type: application/json+userdb
{
"users": [
{
"id": 1,
"name": "Emil",
"country: "Sweden",
"links": [
{
"href": "/user/1",
"rel": "self",
"method": "GET"
},
{
"href": "/user/1",
"rel": "edit",
"method": "PUT"
},
{
"href": "/user/1",
"rel": "delete",
"method": "DELETE"
}
]
},
{
"id": 2,
"name": "Adam",
"country: "Scotland",
"links": [
{
"href": "/user/2",
"rel": "self",
"method": "GET"
},
{
"href": "/user/2",
"rel": "edit",
"method": "PUT"
},
{
"href": "/user/2",
"rel": "delete",
"method": "DELETE"
}
]
}
],
"links": [
{
"href": "/user",
"rel": "create",
"method": "POST"
}
]
}
Мы можем сказать много от этого ответа. Например, мы теперь знаем, что можем создать нового пользователя [1 117] луг к [1 118]:
Запрос
POST /user
Accept: application/json+userdb
Content-Type: application/json+userdb
{
"name": "Karl",
"country": "Austria"
}
Ответ
201 Created
Content-Type: application/json+userdb
{
"user": {
"id": 3,
"name": "Karl",
"country": "Austria",
"links": [
{
"href": "/user/3",
"rel": "self",
"method": "GET"
},
{
"href": "/user/3",
"rel": "edit",
"method": "PUT"
},
{
"href": "/user/3",
"rel": "delete",
"method": "DELETE"
}
]
},
"links": {
"href": "/user",
"rel": "list",
"method": "GET"
}
}
Мы также знаем, что можем изменить существующие данные:
Запрос
PUT /user/1
Accept: application/json+userdb
Content-Type: application/json+userdb
{
"name": "Emil",
"country": "Bhutan"
}
Ответ
200 OK
Content-Type: application/json+userdb
{
"user": {
"id": 1,
"name": "Emil",
"country": "Bhutan",
"links": [
{
"href": "/user/1",
"rel": "self",
"method": "GET"
},
{
"href": "/user/1",
"rel": "edit",
"method": "PUT"
},
{
"href": "/user/1",
"rel": "delete",
"method": "DELETE"
}
]
},
"links": {
"href": "/user",
"rel": "list",
"method": "GET"
}
}
Уведомление, что мы используем различные глаголы HTTP (GET
, PUT
, POST
, DELETE
и т.д.) для управления этими ресурсами, и что единственное знание мы предполагаем на части клиента, является нашим определением медиа.
Дополнительные материалы для чтения:
(Этот ответ был предметом изрядного количества критики за то, что упустили суть. По большей части это было справедливым критическим анализом. То, что я первоначально описал, было больше в соответствии с тем, как REST обычно реализовывался несколько лет назад, когда я сначала записал это, а не его истинное значение. Я пересмотрел ответ для лучше представления реального значения.)
Я приношу извинения, если я не отвечаю на вопрос непосредственно, но легче понять все это с более подробными примерами. Выставление не легко понять из-за всей абстракции и терминологии.
Здесь существует довольно хороший пример:
Объяснение REST и гипертекста: массово-разошлите-E робот очистки спама
И еще лучше, существует чистое объяснение с простыми примерами здесь (powerpoint является более всесторонним, но можно получить максимум от него в версии HTML):
http://www.xfront.com/REST.ppt или http://www.xfront.com/REST.html
После чтения примеров я видел, почему Ken говорит, что REST управляется гипертекстом. Я не на самом деле уверен, что он прав, хотя, потому что это/user/123 является URI, который указывает на ресурс, и мне не ясно, что это неуспокоительно просто, потому что клиент знает об этом "внеполосный".
Это xfront документ объясняет различие между REST и SOAP, и это действительно полезно также. Когда Fielding говорит, "Это - RPC. Это кричит RPC". ясно, что RPC не является УСПОКОИТЕЛЬНЫМ, таким образом, полезно видеть точные основания для этого. (SOAP является типом RPC.)
Вот как это может выглядеть.
Создайте пользователя с тремя свойствами:
POST /user
fname=John&lname=Doe&age=25
Сервер отвечает:
200 OK
Location: /user/123
В будущем, затем вы можете получить информацию о пользователе:
GET /user/123
Сервер отвечает:
200 OK
<fname>John</fname><lname>Doe</lname><age>25</age>
Чтобы изменить запись ( lname
и age
останутся без изменений):
PATCH /user/123
fname=Johnny
Чтобы обновить запись (и, следовательно, lname
и age
будут NULL):
PUT /user/123
fname=Johnny