Как отлаживать RESTful сервисы?
Я ищу простой способ отладки сервисов RESTful. Например, большинство веб-приложений можно отлаживать с помощью обычного веб-браузера. К сожалению, тот же браузер не позволяет мне тестировать HTTP PUT, DELETE и, в некоторой степени, даже HTTP POST.
Я не собираюсь автоматизировать тесты. Я хотел бы запустить новые сервисы через быструю проверку работоспособности, в идеале без необходимости написания своего собственного клиента.
17 ответов
Используйте существующий инструмент "REST client", который облегчает проверку запросов и ответов, например RESTClient.
В моей фирме мы используем различные инструменты и подходы для тестирования сервисов RESTful:
Мы пишем сценарии cURL - по сути, одну команду, сохраненную в файле. Один файл на ресурс для каждого метода. Для PUT и POST у нас обычно есть файлы, содержащие представления для отправки вместе со сценарием cURL. Например, для ресурса почтового ящика у нас может быть файл с именем
mailbox_post.cmd
, который может содержать строкуcurl -v -X POST -u username -H 'Content-Type:application/xml' -d @mailbox_post.xml http://service/mailbox
, Нам нравится этот подход, потому что мы в конечном итоге создаем набор тестов, которые можно запускать в пакете или, по крайней мере, передавать между тестировщиками и использовать для регрессионного тестирования.Мы используем cURL и RESTClient для специальных тестов
У нас есть служба, обслуживающая XHTML по умолчанию, поэтому она доступна для просмотра и добавляет ресурсы форм, так что служба фактически частично или полностью тестируется с помощью браузера. Это было частично вдохновлено некоторыми частями веб-сервисов RESTful, в которых авторы показывают, что грань между веб-сервисами и веб-приложениями не обязательно должна быть такой прочной и строгой, как обычно предполагается.
Мы пишем функциональные тесты в виде замыканий Groovy, используя платформу Restlet, и запускаем тесты с помощью скрипта Groovy для запуска тестов. Это полезно, потому что тесты могут быть с состоянием, основываться друг на друге и совместно использовать переменные, когда это уместно. Мы находим API Restlet простым и интуитивно понятным, и поэтому его легко написать быстрыми HTTP-запросами и протестировать ответы, и это еще проще при использовании в Groovy. (Я надеюсь поделиться этой техникой, в том числе сценарием для тестов, в нашем блоге в ближайшее время.)
Я нашел RequestBin полезным для отладки запросов REST. Публикация по уникальному URL и запрос данных обновляются / отображаются. Может помочь в крайнем случае, когда другие инструменты недоступны.
Инструмент, который я нашел полезным, если вы используете OS X Leopard:
Это очень простая программа с графическим интерфейсом, которая позволяет создавать http-запросы к ресурсу и просматривать ответы.
Вы можете использовать Fiddler's Composer для отладки отдыхающих сервисов.
Обновленный JD 12 сентября 2013 г.: Rest Builder теперь называется Composer.
Я остановился на POSTMAN
Он поддерживает все функции REST, о которых я только мог подумать, и пользовательский интерфейс абсолютно превосходен. Единственным недостатком является то, что он требует Chrome.
Я использую Soap UI для тестирования моего REST API.
Это более полный, чем любые другие инструменты:
- прекрасные отладочные запросы и ответы
- автоматизированное тестирование
- все на основе графического интерфейса
- свойства и свойства передаются для параметризации ваших тестов
- условное тестирование
- тестирование производительности
Я не работаю на SmartBear. Я уже был большим поклонником SoapUI, когда использовал его для SOAP WebServices.
Помимо использования одного из инструментов в ответе Питера Хилтона, я должен был бы сказать, что написание сценариев для тестов с помощью LWP или какого-либо подобного инструмента может быть вашим единственным вариантом. Вы можете обойти использование LWP, просто открыв сокет, отправив необработанный HTTP-запрос и изучив, что вы получите взамен. Но, насколько я знаю, для такого рода доменов не хватает инструментов тестирования - большинство смотрит на это проблемное пространство в первую очередь с точки зрения разработчика веб-сайта, и для них достаточно браузера для тестирования платформы,
Я использую restclient, доступный из Google Code. Это простое приложение Java Swing, которое поддерживает все методы HTTP и позволяет вам полностью контролировать заголовки HTTP, подключение и т. Д.
Ребята, вы должны проверить расширение постера для Firefox, это просто и достаточно полезно для использования:)
Я склонен писать модульные тесты для ресурсов RESTful, используя Jersey, который поставляется с хорошим клиентом REST. Хорошо, если вы реализуете свои ресурсы RESTful с использованием JAX-RS, тогда клиент Jersey может повторно использовать провайдеры сущностей, такие как JAXB/XML/JSON/Atom и т. Д., Чтобы вы могли повторно использовать те же объекты на стороне сервера, что и вы использовать на клиентской стороне модульного теста.
Например, вот пример модульного теста из проекта Apache Camel, который ищет полезные нагрузки XML из ресурса RESTful (используя конечные точки объекта JAXB). В этом базовом классе определен метод resource(uri), который просто использует клиентский API Джерси.
например
clientConfig = new DefaultClientConfig();
client = Client.create(clientConfig);
resource = client.resource("http://localhost:8080");
// lets get the XML as a String
String text = resource("foo").accept("application/xml").get(String.class);
Потому что его здесь совершенно не хватает: https://luckymarmot.com/paw
Стоит когда-нибудь копейки...
Если вам нужен бесплатный инструмент для той же цели с дополнительной функцией представления данных из нескольких частей, он находится здесь http://code.google.com/a/eclipselabs.org/p/restclient-tool/
Firefox имеет плагин RESTClient для отправки различных запросов с методами, параметрами, заголовками и т. Д.