Введение в весеннюю оболочку REST
1. Обзор
В этой статье мы посмотрим на Spring REST Shell и некоторые из ее особенностей.
Это расширение Spring Shell, поэтому мы рекомендуем прочитать об этом в первую очередь.
2. Введение
Spring REST Shell — это командная оболочка, предназначенная для облегчения работы с ресурсами REST, совместимыми с Spring HATEOAS.
Нам больше не нужно манипулировать URL-адресами в Баш с помощью таких инструментов, как локон. Spring REST Shell предоставляет более удобный способ взаимодействия с ресурсами REST.
3. Установка
Если мы используем macOS-машину с Homebrew, мы можем просто выполнить следующую команду:
brew install rest-shell
Для пользователей других операционных систем, мы должны скачать бинарный пакет из официальная страница проекта GitHub , распаковать пакет и найти выполненный для запуска:
tar -zxvf rest-shell-1.2.0.RELEASE.tar.gz cd rest-shell-1.2.0.RELEASE bin/rest-shell
Другим вариантом является загрузка исходный код и выполнить задачу Gradle:
git clone git://github.com/spring-projects/rest-shell.git cd rest-shell ./gradlew installApp cd build/install/rest-shell-1.2.0.RELEASE bin/rest-shell
Если все установлено правильно, мы увидим следующее приветствие:
___ ___ __ _____ __ _ _ _ _ __ | _ \ __/' _/_ _/' _/| || | / / | \ \ | v / _|`._`. | | `._`.| >< | / / / > > |_|_\___|___/ |_| |___/|_||_| |_/_/ /_/ 1.2.1.RELEASE Welcome to the REST shell. For assistance hit TAB or type "help". http://localhost:8080:>
4. Начало работы
Мы будем работать с API уже разработаны для другой статьи . localhost:8080 используется в качестве базового URL.
Вот список открытых конечных точек:
- ПОЛУЧИТЬ /статьи – получить все Статья секунда
- ПОЛУЧИТЬ /статьи/йид – получить Статья по идентификатору
- ПОЛУЧИТЬ /статьи/поиск/поискByTitle?название и название – получить Статья по названию
- GET/profile/articles – получить данные профиля для Статья ресурс
- POST /статьи – создать новую Статья с телом при условии,
Статья класс имеет три поля: ID, название, и содержание.
4.1. Создание новых ресурсов
Давайте добавим новую статью. Мы будем использовать почтовый команда прохождения JSON Струнные с – данные параметр .
Во-первых, мы должны следовать URL-адрес, связанный с ресурсом, который мы хотим добавить. Командный следовать берет относительный URI, сотывает его с базаУри и устанавливает результат как текущее местоположение:
http://localhost:8080:> follow articles http://localhost:8080/articles:> post --data "{title: "First Article"}"
Результатом выполнения команды будет:
< 201 CREATED < Location: http://localhost:8080/articles/1 < Content-Type: application/hal+json;charset=UTF-8 < Transfer-Encoding: chunked < Date: Sun, 29 Oct 2017 23:04:43 GMT < { "title" : "First Article", "content" : null, "_links" : { "self" : { "href" : "http://localhost:8080/articles/1" }, "article" : { "href" : "http://localhost:8080/articles/1" } } }
4.2. Открытие ресурсов
Теперь, когда у нас есть ресурсы, давайте выясним их. Мы собираемся использовать обнаружить команда, которая раскрывает все доступные ресурсы на текущем уровне URI :
http://localhost:8080/articles:> discover rel href ================================================= self http://localhost:8080/articles/ profile http://localhost:8080/profile/articles article http://localhost:8080/articles/1
Зная ресурс URI, мы можем получить его с помощью получить команда:
http://localhost:8080/articles:> get 1 > GET http://localhost:8080/articles/1 < 200 OK < Content-Type: application/hal+json;charset=UTF-8 < Transfer-Encoding: chunked < Date: Sun, 29 Oct 2017 23:25:36 GMT < { "title" : "First Article", "content" : null, "_links" : { "self" : { "href" : "http://localhost:8080/articles/1" }, "article" : { "href" : "http://localhost:8080/articles/1" } } }
4.3. Добавление параметров запросов
Мы можем указать параметры запроса как фрагменты JSON, используя – парамы параметр.
Давайте статью по данному названию:
http://localhost:8080/articles:> get search/findByTitle \ > --params "{title: "First Article"}" > GET http://localhost:8080/articles/search/findByTitle?title=First+Article < 200 OK < Content-Type: application/hal+json;charset=UTF-8 < Transfer-Encoding: chunked < Date: Sun, 29 Oct 2017 23:39:39 GMT < { "title" : "First Article", "content" : null, "_links" : { "self" : { "href" : "http://localhost:8080/articles/1" }, "article" : { "href" : "http://localhost:8080/articles/1" } } }
4.4. Установка хедерсов
Командование вызвало головки позволяет управлять заготовщиками в рамках сессионой – каждый запрос будет отправлен с помощью этих заготовок. головки установить берет -имя и -значение аргументы для определения заголовка.
Мы собираемся добавить несколько заготовок и сделать запрос, включая эти заготовки:
http://localhost:8080/articles:> headers set --name Accept --value application/json { "Accept" : "application/json" } http://localhost:8080/articles:> headers set --name Content-Type --value application/json { "Accept" : "application/json", "Content-Type" : "application/json" } http://localhost:8080/articles:> get 1 > GET http://localhost:8080/articles/1 > Accept: application/json > Content-Type: application/json
4.5. Написание результатов в файл
Не всегда желательно распечатать результаты запроса HTTP на экран. Иногда нам нужно сохранить результаты в файле для дальнейшего анализа.
– выходной параметр позволяет выполнять такие операции:
http://localhost:8080/articles:> get search/findByTitle \ > --params "{title: "First Article"}" \ > --output first_article.txt >> first_article.txt
4.6. Чтение JSON из файла
Часто данные JSON слишком велики или слишком сложны, чтобы их можно было введать через консоль с помощью – данные параметр.
Кроме того, существуют некоторые ограничения на формат данных JSON, которые мы можем ввести непосредственно в командную строку.
тем – от параметр дает возможность чтения данных из файла или каталога.
Если значение является каталогом, оболочка будет читать каждый файл, который заканчивается “.json” и выполнить POST или PUT с содержанием этого файла.
Если параметр является файлом, то оболочка загрузит файл и данные POST/PUT из этого файла.
Давайте создадим следующую статью из файла second_article.txt :
http://localhost:8080/articles:> post --from second_article.txt 1 files uploaded to the server using POST
4.7. Установка переменных контекста
Мы также можем определить переменные в контексте текущего сеанса. Командный вар определяет получить и установить параметры для получения и установки переменной соответственно.
По аналогии с головки , аргументы -имя и -значение для того, чтобы дать название и значение новой переменной:
http://localhost:8080:> var set --name articlesURI --value articles http://localhost:8080/articles:> var get --name articlesURI articles
Теперь мы распечатаем список доступных переменных в контексте:
http://localhost:8080:> var list { "articlesURI" : "articles" }
Убедившись, что наша переменная была сохранена, мы будем использовать ее с следовать команда для перехода на данный URI:
http://localhost:8080:> follow #{articlesURI} http://localhost:8080/articles:>
4.8. Просмотр истории
Все пути, которые мы посещаем, записаны. Командный история показывает эти пути в хронологическом порядке :
http://localhost:8080:> history list 1: http://localhost:8080/articles 2: http://localhost:8080
Каждый URI связан с числом, которое может быть использовано для того, чтобы перейти к этому URI:
http://localhost:8080:> history go 1 http://localhost:8080/articles:>
5. Заключение
В этом учебнике мы сосредоточились на интересном и редком инструменте в экосистеме Spring – инструменте командной строки.
Более подробную информацию о проекте можно найти более на GitHub .
И, как всегда, все фрагменты кода, упомянутые в статье, можно найти в наш репозиторий .