успокоительный предназначенный для веб-сервисов только ИЛИ и для веб-сервисов И ДЛЯ веб-страниц?

Я прочитал много Успокоительных учебных руководств для PHP.

(Я не хочу идти подробно в то, почему я не использую RoR. Это происходит из-за команды, являющейся более знакомым с PHP),

Поскольку мы планируем будущее расширение в наличие API, я считал, что важно реализовать Успокоительные веб-сервисы.

Я посмотрел на учебные руководства такой как

http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

По-видимому успокоительный предназначен для веб-сервисов.

Что относительно для веб-страниц? они могут быть УСПОКОИТЕЛЬНЫМИ также?

если ответ нет, не идите вне этой строки И просто говорите мне.Спасибо.

я знаю, чтобы заставить URL быть похожими на УСПОКОИТЕЛЬНЫЕ URL, должен просто использовать mod_rewrite. Однако я совершенно уверен, архитектура RESTful идет вне просто того, чтобы заставлять URL выглядеть хорошей.

Для, например, у меня есть список объектов на веб-странице, названной list.php. Каждый объект имеет удалить ссылку рядом с ним. Например, list.php? id=1&deleteitem

То, что происходит, является этим, когда кто-то нажимает на list.php? ссылка id=1&deleteitem, конечно, я возвращаюсь к тому же list.php файлу и проверке на параметрический усилитель deleteitem в $ _GET.

Если обнаружено, я затем удалю из базы данных на основе идентификатора параметрического усилителя в $ _GET.

После которого я перенаправлю назад к list.php БЕЗ любых параметрических усилителей.

Я задаюсь вопросом, как я делаю этот целый поток УСПОКОИТЕЛЬНЫМ?

Я спрашиваю, потому что в REST, для создания удаляют что-то, что необходимо использовать метод Запроса HTTP (УДАЛЯЮТ).

Очевидно в моих ссылках они - все просто Delete

Просветите меня.

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

Спасибо.

Править

Я имею 2, развивают вопросы.

вопрос 1), Так как это - список объектов с подкачкой страниц, как URL был бы похож, если я хочу сделать это УСПОКОИТЕЛЬНЫМ?

вопрос 2), Так как я помещаю, УДАЛЯЕТ ссылки рядом с каждыми из объектов в списке, я понимаю теперь, я должен использовать

вместо этого.

однако форма должна быть отправлена туда, где? URL объекта?/items/{идентификатор объекта}

Но я хочу вернуться к этой странице списка, отображающей сообщение успеха ПОСЛЕ успешного удаления строки в базе данных.

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

Если я отправляю назад на этот list.php URL, то это не УСПОКОИТЕЛЬНО да? потому что мне говорят ответы, ниже которых каждый объект является ресурсом, которому нужен его собственный URL.

Просветите меня.Спасибо.

5
задан Kim Stacks 6 March 2010 в 14:57
поделиться

5 ответов

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

Есть четыре основных операции, которые вы можете выполнить с ресурсом.

  • создать (POST)
  • прочитать (GET)
  • обновить (PUT)
  • удалить (DELETE)

Большинство веб-браузеров не поддерживают PUT и DELETE действия, поэтому вы можете использовать только действия POST для отправки данных. Rails подделывает PUT и DELETE, передавая скрытый параметр с именем _method , который фреймворк подбирает и направляет в зависимости от этого значения.

Кроме того, вы никогда не должны использовать GET для каких-либо деструктивных действий. Любое действие, которое изменяет состояние ваших ресурсов, должно вызываться либо с помощью POST , PUT , либо DELETE в зависимости от изменения (поддельный PUT / УДАЛИТЬ с помощью POST, если необходимо).

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

  • индекс (перечисление всех элементов)
  • новое (обычно представление формы для добавления нового ресурса)
  • редактирование (обычно представление формы для обновления существующего ресурса )

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

Редактировать 1 : Самоописательные URL-адреса предпочтительны и облегчат вашу жизнь, но ничто не мешает создавать загадочные URL-адреса, которые однозначно идентифицируют ресурс и управляют им с помощью HTTP-глаголов. URL-адреса, подобные приведенным ниже (с использованием md5) для уникальной идентификации ресурсов, идеально подходят для RESTful.

// represents a person "John Doe"
http://example.com/4c2a904bafba06591225113ad17b5cec

// represents the movie "Lord of the Rings: The Two Towers"
http://example.com/1d9198260dec7bda3fb21e232d60fec3

// represents the "Formula One" sport
http://example.com/fs340as?id=23xa12&type=SP012Ts

Это REpresentational State Transfer прямо здесь. Хеш MD5 подобен почтовому адресу ресурса, который остается постоянным. Представлением могут быть детали фильма (в html / xml / json / и т. Д.) Или, возможно, видео самого фильма в зависимости от возможностей клиента).

Редактировать 2 : Допустим, у вас есть ресурс, который представляет собой коллекцию - стран мира. Он может быть представлен URI и HTTP глагол, например:

GET /countries

Поскольку разбиение на страницы - это свойство приложения, а не сам ресурс, вы можете предоставить параметры строки запроса для управления им.

GET /countries?page=1

Страна также является ресурсом, который является частью ресурса стран.Вы можете определить страну с помощью URL-адреса, например:

/countries/<id>

И операции с этой страной могут быть выполнены с помощью следующих глаголов:

GET    /countries/<id>
POST   /countries  -- the new country has no existing representation
PUT    /countries/<id>
DELETE /countries/<id>
6
ответ дан 13 December 2019 в 19:25
поделиться

Спокойный подход, безусловно, можно использовать и на веб-страницах. Ввод команд в URL-адрес - не лучшая идея из-за упомянутых вами побочных эффектов. Когда вы меняете базу данных (или делаете что-то, что меняет модель), используйте команды POST.

Конечно, у вас нет PUT и DELTE в основных веб-браузерах, но вы всегда можете отправить простой POST с определенным параметром, например method = "PUT", method = "УДАЛИТЬ" и т. Д.

1
ответ дан 13 December 2019 в 19:25
поделиться

Длинный ответ, краткий: да. ОТДЫХ предназначен для обоих. Это потому, что даже если у вас самый простой из всех веб-сайтов, вам все равно придется ПОЛУЧИТЬ свою страницу и, возможно, отправить свои личные данные, чтобы добавить запись в гостевую книгу. В этом мы все так или иначе придерживаемся REST.

В вашем случае плохая реализация браузера затрудняет реализацию PURE RESTful. DELETE не поддерживается без Javascript, и поэтому вам все равно придется использовать GET или POST (которые имеют совершенно другое значение, чем DELETE в REST).

2
ответ дан 13 December 2019 в 19:25
поделиться

Я написал крошечный фреймворк поверх Zend Framework, чтобы упростить реализацию интерфейсов RESTful:

http://github.com/mikekelly/ Resauce

Вы можете использовать это для веб-сервисов и веб-сайтов. По сути, веб-сайт - это просто веб-сервис, управляемый HTML.

1
ответ дан 13 December 2019 в 19:25
поделиться

RESTful означает не "красивые URI". Несмотря на то, что URI идентифицируют ресурс, единственное, что REST говорит о URI, это то, что они не должны содержать параметр действия типа "delete".

В вашем случае вы бы вызвали

DELETE /items/6793

Ответом обычно будет код состояния 200 OK с измененным списком в качестве тела сообщения. См: http://restpatterns.org/HTTP_Methods/DELETE

Поскольку HTML 4 не поддерживает другие действия с формой, кроме GET и POST, вы должны обойтись скрытым параметром и переопределить метод HTTP на стороне сервера.

1
ответ дан 13 December 2019 в 19:25
поделиться
Другие вопросы по тегам:

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