2012-05-10 12 views
7

У меня был (очень простой) самостоятельный сервер REST, встроенный в мое приложение в Delphi 7 (с ICS + некоторые stuf), он работает, но нелегко поддерживать &. Теперь я использую Delphi XE2 Pro (без DataSnap), и я бы изменил для более стандартного решения, но все же просто.Сервер REST в Delphi XE2 pro

Есть ли приятные легкие в этом?

ответ

6

Структура Habari Web Components - простая (коммерческая) структура HTTP-сервера для Delphi 2009 и более новая. С TdjRestfulComponent он также включает в себя расширение REST. (Я являюсь разработчиком этих библиотек)

Конфигурация TdjRestfulComponent может быть выполнена в стиле атрибута/аннотации или в традиционном процедурном стиле.

Все HTTP-методы и типы контента могут быть сопоставлены с различными анонимными методами и по-прежнему используют один и тот же ресурс URI (один URI, разные представления ресурсов - в зависимости от типа запрашиваемого контента). Например, чтобы представить ресурс /myresource в HTML, XML или JSON, он может быть настроен так:

// respond to HTML browser GET request 
&Path('myresource'); 
&Produces('text/html'); 
GET(procedure(Request: TRequest; Response: TResponse) 
begin 
    Response.ContentText := '<html>Hello world!</html>'; 
end); 

// respond to XML client 
&Path('myresource'); 
&Produces('application/xml'); 
GET(procedure(Request: TRequest; Response: TResponse) 
    begin 
    Response.ContentText := '<xml>Hello world!</xml>'; 
    end); 

// respond to JSON client 
&Path('myresource'); 
&Produces('application/json'); 
GET(procedure(Request: TRequest; Response: TResponse) 
    begin 
    Response.ContentText := '{"msg":"Hello world!"}'; 
    end); 

Компонент также поддерживает параметры пути:

&Path('orders/{orderId}/lines/{lineNo'); 

будет анализировать URL, как

http://mydomain.local:8080/context/orders/65432/lines/1 

в дополнительные параметры запроса (orderId=65431 и lineNo=1)

2

Я не знаю, если это так просто, как требуется, но вы можете взглянуть на наш mORMot framework.

Это сервер RESTful с ORM клиент-сервера и службы на основе интерфейса (например, WCF). Он легкий и быстрый, но также имеет множество функций.

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

Он работает с любой версией Delphi, от Delphi 6 до XE2 и не требует конкретной лицензии: он будет работать и с версией Starter. Даже подключения к базе данных включены.

Это не «стандарт» сам по себе, но он использует известные стандарты, такие как REST, HTTP, JSON. Он имеет встроенную аутентификацию по каждому URI и целую политику безопасности для каждого интерфейса. Более 800 страниц документации и полный набор регрессионных тестов включены. Для быстрого запуска, take a look at the samples - Я подозреваю, что вам может быть легко.

И это бесплатно, как пиво, и как птица.

+2

Arnaud: Да, я смотрю ваши проекты с большого количества времени, я нашел бы более простое решение, но mORMot - хороший кандидат ... – philnext

+0

@philnext Почему вы думаете, что mORMot не прост? Он содержит много вещей, основанных на сервере RESTful. Но его использование - это просто KISS: взгляните на образцы. Он используется некоторыми пользователями только для этого, без части ORM или SOA. Но я думаю, что интерфейс SOA и встроенная сериализация JSON - это необходимость для вас. Когда ваша реклама RESTful вырастет, вам не придется изобретать велосипед! Существует [гораздо больше, чем требуется уровень связи] (http: //blog.synopse.info/post/2012/04/25/The-mORMot-отношение), когда вы хотите создать сервер RESTful для истинного приложения. –

+0

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

Смежные вопросы