Любые простые обучающие программы REST для Java?

Каждый учебник или объяснение REST просто слишком усложняется слишком быстро - кривая обучения быстро растет после первоначального объяснения CRUD и предполагаемой простоты над SOAP. Почему люди больше не могут писать достойные учебники?

Я смотрю на Restlet - и это не самое лучшее, в учебнике отсутствуют вещи, а язык/грамматика немного запутанна и неясна. Мне потребовалось несколько часов, чтобы распутать их учебник по первым шагам (с помощью другого Java-программиста!)

Комментарии к RESTlet

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

  • Нам было трудно понять, что банки должны были быть скопированы в правильную папку lib.

  • Проблемы с web.xml, создающими ошибку HTTP Status 500 -

Сервер обнаружил внутреннюю error(), которая помешала ему выполняя этот запрос

в уроке говорится:

"Создайте новое веб-приложение сервлета как обычно, добавьте пакет" com.firstStepsServlet "и поместить ресурс и приложение классы в."

Это означает, что ваше полное имя для вашего класса FirstStepsApplication com.firstStepsServlet.FirstStepsApplication, поэтому нам пришлось изменить web.xml для ссылки на правильный класс, например

оригинал:

<param-value>
         firstStepsServlet.FirstStepsApplication
</param-value>

должен быть:

<param-value>
         com.firstStepsServlet.FirstStepsApplication
</param-value>

Заключение

У меня создалось впечатление, что концепции REST должны быть намного проще, чем SOAP - но это кажется столь же плохим, если не более сложным - не получите его вообще! Grrrr

Любые хорошие ссылки - очень ценятся.

Ответ 1

Похоже, вы могли бы использовать глубокое понимание основ REST, и для этого я настоятельно рекомендую RESTful Web Services Леонарда Ричардсона и Сэм Руби. Я даю отличное введение в REST: что это такое и как реализовать (практический) веб-сервис RESTful.

Большая часть кода примера в книге - это Ruby, но достаточно легко понять, даже если вы не специалист по Ruby. Но одна вещь, которая должна помочь вам в частности, состоит в том, что одна из последующих глав книги содержит обзор нескольких RESTful-фреймворков, включая Restlet. Он действительно не попадает в какой-либо код (это 50-футовый эстакада), но я думаю, что он даст вам именно то, что вам нужно на этом этапе.

Ответ 2

Не могли бы вы точно описать, что вызвало у вас проблемы в наших учебниках Restlet? Мы заинтересованы в исправлении/улучшении того, что нужно.

Вы проверяли скринкасты? http://www.restlet.org/documentation/1.1/screencast/

В противном случае в книге O'Reilly есть учебник Restlet, который мы писали в главе 12.

Если у вас все еще есть проблемы, обратитесь в нашу рассылку: http://www.restlet.org/community/lists

С уважением, Жером Лувел

Restlet ~ Основатель и ведущий разработчик ~ http://www.restlet.org Noelios Technologies ~ Соучредитель ~ http://www.noelios.com

Ответ 3

Структура Restlet состоит из четырех основных частей.

1. API-интерфейс Restlet

Во-первых, существует "API-интерфейс Restlet", нейтральный API, поддерживающий концепции REST и облегчающий обработку вызовов как для клиентских, так и для серверных приложений. Этот API поддерживается движком Restlet Engine, и оба они теперь отправляются в одном JAR ( "org.restlet.jar" ).

Это разделение между API и реализацией аналогично разделению между API сервлета и веб-контейнерами, такими как Jetty или Tomcat, или между JDBC API и конкретными драйверами JDBC.

2. Извлечение содержимого веб-страницы

Как мы уже упоминали в вступительной статье, инфраструктура Restlet является одновременно средой клиента и сервера. Например, Restlet может легко работать с удаленными ресурсами, используя свой клиентский коннектор HTTP. Разъем REST - это программный элемент, который обеспечивает связь между компонентами, как правило, путем реализации одной стороны сетевого протокола. Restlet предоставляет несколько реализаций клиентских соединителей на основе существующих проектов с открытым исходным кодом. В разделе разъемов перечислены все доступные клиентские и серверные коннекторы и объясняется, как их использовать и настраивать.

Здесь мы получим представление существующего ресурса и выведем его в консоли JVM:

// Outputting the content of a Web page  
new ClientResource("http://").get().write(System.out);  

Обратите внимание, что в приведенном выше примере используется упрощенный способ выдачи вызовов через класс ClientResource. Если вам требуется многопоточность или больший контроль, все же можно манипулировать использованием класса коннектора клиента или объектов запроса напрямую. Пример ниже, как установить некоторые настройки в вашем клиентском вызове, например, URI реферера. Это могут быть также языки и типы медиа, которые вы предпочитаете получать в ответ:

// Create the client resource  
ClientResource resource = new ClientResource("http://www.restlet.org");  

// Customize the referrer property  
resource.setReferrerRef("http://www.mysite.org");  

// Write the response entity on the console  
resource.get().write(System.out);  

3. Прослушивание веб-браузеров

Теперь мы хотим увидеть, как среда Restlet может прослушивать запросы клиентов и отвечать на них. Мы будем использовать внутренний соединитель HTTP-сервера Restlet (даже если можно переключиться на другие, например, на основе Mortbay Jetty) и вернуть простое строковое представление "привет, мир" в виде обычного текста. Обратите внимание, что класс Part03 расширяет базовый класс ServerResource, предоставляемый Restlet:

 public class Part03 extends ServerResource {  

    public static void main(String[] args) throws Exception {  
        // Create the HTTP server and listen on port 8182  
        new Server(Protocol.HTTP, 8182, Part03.class).start();  
    }  

    @Get  
    public String toString() {  
        return "hello, world";  
    }  

}  

Если вы запустите этот код и запустите свой сервер, вы можете открыть веб-браузер и нажать. Собственно, любой URI будет работать, попробуйте также. Обратите внимание: если вы тестируете свой сервер с другого компьютера, вам нужно заменить "localhost" на IP-адрес вашего сервера или его доменное имя, если оно определено.

До сих пор мы в основном показывали вам самый высокий уровень абстракции в API-интерфейсе Restlet, с классами ClientResource и ServerResource. Но по мере продвижения вперед вы обнаружите, что эти два класса поддерживаются богатым API, позволяя вам манипулировать всеми артефактами REST.

4. Обзор архитектуры REST

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

Ответ 5

вы указываете на ошибку внутри web.xml, но я только что проверил в документации Restlet 1.0 и 1.1, и я не вижу такой ошибки. Я хотел бы упомянуть, что вы можете найти в конце страницы zip, который содержит полный файл войны и список исходных файлов, если вы хотите работать в автономном режиме. Вы пробовали автономный режим? Как объяснено в туто, вам нужно всего 2 баночки в пути к классам и исходные файлы.

Мы хотели бы также указать, что учебник "firstSteps" не является учебным пособием по REST, а является программным обеспечением с помощью Restlet. Вы также можете посмотреть учебник "firstResource" (http://www.restlet.org/documentation/1.1/firstResource), в котором описывается, как разработать простой ресурс и который вводит некоторые понятия стиля архитектуры REST. Это должно помочь вам.

Ответ 6

Кроме того, квалифицированное имя, предложенное в учебнике, действительно является "firstStepsServlet.FirstStepsApplication", а не "com.firstStepsServlet.FirstStepsApplication".

Следовательно, рекомендуемое значение параметра в web.xml является правильным.

Не могли бы вы подтвердить, что это устраняет проблему? Кроме того, были ли у вас знания по внедрению сервлета перед чтением учебника? Если нет, это объясняет боль. В этом случае автономный режим, вероятно, лучше подходит.