Создание веб-службы REST в Delphi 2009 с использованием IIS - PullRequest
9 голосов
/ 18 мая 2011

Возможно ли создать веб-сервис REST в Delphi 2009, который работает на IIS? Я смотрел на приложения веб-брокера и веб-сервера, но пока не могу понять. Если это возможно, как бы мне заставить его работать?

1 Ответ

11 голосов
/ 18 мая 2011

Веб-сервисы REST в Delphi очень просты ... на самом деле слишком просты, поскольку иногда они скрыты и скрыты в сложных демонстрациях WebSnap. Вы можете использовать Web-брокер, WebSnap, Indy, Synapse или другие общие компоненты HTTP-сервера. Я бы не стал использовать WebSnap на вашем первом выходном RESTful. Я бы придерживался WebBroker или, еще проще, Indy.

Файл-> Новый-> Другой WebBroker-> Приложение веб-сервера

У вас есть выбор отладчика ISAPI DLL или Web App ... для первого, я рекомендую приложение WAD. (На самом деле, любое веб-приложение должно начинаться с WAD для сервера, а затем создавать приложение для тестирования клиентов, чтобы впоследствии было легче выполнять отладку.) Если вы выберете WAD, присвойте ему имя - например, MyFirstREST. Это создаст проект с веб-модулем по умолчанию, который отвечает простым документом HTML на любой запрос.

Щелкните правой кнопкой мыши веб-модуль, выберите пункт всплывающего меню «Редактор действий» и создайте команды RESTful с помощью пользовательских настроек PathInfo. Затем вы просто определяете события для ответа на эти команды.

Для Indy, просто запустите новое приложение-службу Windows и добавьте компонент TidHTTPServer в модуль данных службы. Затем определите OnCommandGET для простых запросов HTTP GET (http://yourserver/customer?id=1) Также определите OnCommandOther для запросов POST.

Существует TIdHTTPResponseInfo и TIdHTTPResponseInfo, отправленные в событие ... просто посмотрите на QueryParams для GET, чтобы извлечь переданные параметры и заполнить ContentStream (или ContentText) ответа вместе с ContentType.

Многие учебники по реализации REST можно найти в Интернете - один из IBM: http://www.ibm.com/developerworks/webservices/library/ws-restful/

Как правило, вы используете серверы RESTful для работы с XML-запросами и ответами, но нет никаких ограничений на реализацию сервера. Все зависит от того, как ожидания клиентов. Если вы также управляете клиентской стороной, вы можете даже передавать объекты назад и вперед путем сериализации потомков TObject.

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