Получение ответа REST на локальном компьютере - PullRequest
0 голосов
/ 15 ноября 2009

Я использую веб-сервис для конвертации файлов. Служба возвращает преобразованный файл в виде HTTP POST вместе с данными идентификатора. Мое приложение получает ответ, обновляет свою базу данных и сохраняет файл в соответствующем месте.

По крайней мере, это идея, но как мне разработать и протестировать это на локальной машине? Поскольку это не публично, я не могу предоставить директиву URL. Какой лучший способ справиться с этим? Я хочу, чтобы процесс был как можно более чистым, и единственные идеи, которые я могу придумать, казались чрезмерно грязными.

Учитывая, насколько распространена разработка REST API, я предполагаю, что для этого есть хорошо разработанные лучшие практики. Любая помощь приветствуется.

Ответы [ 4 ]

0 голосов
/ 16 ноября 2010

Если ваш вопрос касается тестирования, почему бы вам не использовать макеты для фальсификации сервера? Это более элегантно, чем использование Webrat, и проще в развертывании (у вас есть только одно приложение вместо приложения и тестовая среда).

Подробнее о макетах http://blog.floehopper.org/presentations/lrug-mock-objects-2007-07-09/

У вас есть информация о макетах с Rspec здесь http://rspec.info/documentation/mocks/

0 голосов
/ 15 ноября 2009

Если ваша машина не доступна для службы, которую вы используете, тогда единственным вариантом будет создание локальной реализации службы, которая будет использовать ваш API. Неплохо было бы выполнить задачу rake, которая отправляет POST с файлом и информацией, чтобы вы могли запустить приложение rails локально, а затем запустить задачу с некоторыми параметрами, чтобы запустить ваше приложение.

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

Это, конечно, не будет легко или просто, особенно если ваш интерфейс с этим внешним сервисом сложен. Убедитесь, что ваши тестовые примеры отправляют неверные сообщения POST в ваше приложение, так что вы уверены, что справляетесь как с тем, что ожидаете, так и с тем, что вы не делаете.

Также убедитесь, что вы проводите некоторое интеграционное тестирование с реальной службой, прежде чем начать работу с приложением. Надеемся, что вы сможете развернуть на внешнем сервере, к которому веб-сервис сможет получить доступ для тестирования. Хостинговая среда Amazon EC2 позволит вам очень быстро настроить сервер, запустить тесты, а затем завершить работу без особых затрат.

0 голосов
/ 15 ноября 2009

У вас есть 2 варианта:

  1. Установите динамический DNS и откройте свое приложение для внешнего мира. Это работает, только если у вас есть полный контроль над вашей сетью.

  2. Используйте что-то вроде webrat, чтобы подделать сообщения в вашем приложении. Поскольку это всего 1 запрос, это кажется довольно тривиальным.

Учитывая, что вы должны писать для этого автоматические тесты, я бы пошел с # 2. Раньше я занимался # 1 при разработке приложений для Facebook, так как было очень много запросов, чтобы издеваться над ними с помощью вебрата.

0 голосов
/ 15 ноября 2009

Решение немного изменится в зависимости от того, какой сервер вы используете.

Но общепринятый метод использует адрес обратной связи: 127.0.0.1 вместо полного доменного имени. Возможно, ваш сервер необходимо перенастроить для прослушивания этого IP-адреса, но обычно это тривиальное исправление.

пример: http://127.0.0.1/path/to/resource.html

Вы можете использовать curl или даже ваш браузер, если у вашего приложения есть подходящий интерфейс. Есть много других подобных инструментов для проверки этого из командной строки, и у каждого языка есть набор библиотек для установления http-соединений и передачи данных по ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...