2012-05-10 29 views
7

Tenía un (muy simple) servidor REST incorporado en mi aplicación en Delphi 7 (con ICS + algo stuf), funciona pero no es fácil de mantener & extender. Ahora uso Delphi XE2 Pro (sin DataSnap) y cambiaría por una solución más estándar, pero simple.servidor REST en Delphi XE2 pro

¿Hay alguna manera fácil de hacerlo?

Respuesta

6

El marco Habari Web Components es un marco de servidor HTTP simple (comercial) para Delphi 2009 y posterior. Con el TdjRestfulComponent también incluye una extensión REST. (Soy el desarrollador de estas bibliotecas)

La configuración de TdjRestfulComponent se puede realizar en un estilo de atributo/anotación o de una manera de estilo de procedimiento más tradicional.

Todos los métodos y tipos de contenido HTTP se pueden asignar a diferentes métodos anónimos y aún compartir el mismo URI de recursos (un URI, diferentes representaciones de recursos, dependiendo del tipo de contenido solicitado). Por ejemplo, para representar el recurso /myresource en HTML, XML o JSON, que se puede configurar como esto:

// 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); 

El componente también es compatible con los parámetros de trayectoria:

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

analizará una URL como

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

en parámetros de consulta adicionales (orderId=65431 y lineNo=1)

2

No sé si es tan simple como sea necesario, pero puede echar un vistazo a nuestro mORMot framework.

Este es un servidor RESTful completo, con un ORM cliente-servidor y servicios basados ​​en interfaz (como WCF). Es ligero y rápido, pero también tiene muchas funciones.

Puede hacer cualquier tipo de aplicación que desee. Por ejemplo, algunos usuarios no usan su ORM ni su SOA, sino que simplemente lo utilizan como un servidor RESTful muy rápido.

Funciona con cualquier versión de Delphi, desde Delphi 6 hasta XE2, y NO requiere una licencia en particular: funcionaría también con la edición Starter. Incluso las conexiones a la base de datos están incluidas.

No es un "estándar" en sí mismo, pero utiliza estándares bien conocidos, como REST, HTTP, JSON. Tiene una autenticación incorporada por URI y una política de seguridad completa por interfaz/por método. Más de 800 páginas de documentación y un conjunto completo de pruebas de regresión incluidas. Para un inicio rápido, take a look at the samples - sospecho que puede encontrarlo fácil.

Y es gratis como una cerveza, y como un pájaro.

+2

Arnaud: Sí. Miro tus proyectos desde hace mucho tiempo, encontraría una solución más simple pero mORMot es un buen candidato ... – philnext

+0

@philnext ¿Por qué crees que mORMot no es simple? Cuenta con muchas cosas, basadas en un servidor RESTful. Pero su uso es simple KISS: echa un vistazo a las muestras. Algunos usuarios lo utilizan solo para esto, sin la parte ORM o SOA. Pero creo que la interfaz basada en SOA y la serialización incorporada de JSON es una necesidad para usted. Cuando su aplicación RESTful crezca, ¡no tendrá que reinventar la rueda! Hay [mucho más que una capa de comunicación necesaria] (http: //blog.synopse.info/post/2012/04/25/The-mORMot-attitude), cuando desee construir un servidor RESTful para una verdadera aplicación. –

+0

Como sé la calidad de sus proyectos, creo que, sí, mORMot es ORM simple y limpio. Pero ahora solo quiero una solución REST. Puede ser que mORMot sea el mejor candidato para eso, y asegúrate de que lo probaré ... – philnext

Cuestiones relacionadas