2012-05-10 47 views
7

Tôi đã có một máy chủ REST (rất đơn giản) tự được nhúng trong ứng dụng của tôi trong Delphi 7 (với ICS + một số stuf), nó hoạt động nhưng không phải là dễ dàng để duy trì mở rộng &. Bây giờ tôi sử dụng Delphi XE2 Pro (không có DataSnap) và tôi sẽ thay đổi cho một giải pháp tiêu chuẩn hơn, nhưng đơn giản.Máy chủ REST trong Delphi XE2 pro

Bạn có dễ dàng thực hiện việc này không?

Trả lời

6

Khuôn khổ Habari Web Components là một khung máy chủ HTTP đơn giản (thương mại) cho Delphi 2009 và mới hơn. Với số TdjRestfulComponent, nó cũng bao gồm phần mở rộng REST. (Tôi là nhà phát triển của các thư viện này)

Cấu hình TdjRestfulComponent có thể được thực hiện trong kiểu thuộc tính/chú thích hoặc theo cách thủ tục truyền thống hơn.

Tất cả phương thức HTTP và kiểu nội dung có thể được ánh xạ tới các phương thức ẩn danh khác nhau và vẫn chia sẻ cùng một tài nguyên URI (một URI, các biểu diễn tài nguyên khác nhau - tùy thuộc vào loại nội dung được yêu cầu). Ví dụ, để đại diện cho nguồn /myresource trong HTML, XML hay JSON, nó có thể được cấu hình như thế này:

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

Thành phần cũng hỗ trợ các tham số đường dẫn:

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

sẽ phân tích một URL như

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

tham số truy vấn bổ sung (orderId=65431lineNo=1)

2

Tôi không biết nếu nó đơn giản như được yêu cầu, nhưng bạn có thể xem mORMot framework của chúng tôi.

Đây là toàn bộ máy chủ RESTful, với máy chủ Client-Server ORM và một dịch vụ dựa trên giao diện (như WCF). Đó là ánh sáng và nhanh chóng, nhưng cũng có rất nhiều tính năng.

Bạn có thể làm bất kỳ loại ứng dụng nào mình muốn. Ví dụ, một số người dùng không sử dụng ORM của nó, cũng không phải SOA của nó, nhưng chỉ sử dụng nó như một máy chủ RESTful rất nhanh.

Nó hoạt động với bất kỳ phiên bản nào của Delphi, từ Delphi 6 lên đến XE2 và KHÔNG yêu cầu giấy phép cụ thể: nó cũng hoạt động với phiên bản Starter. Ngay cả các kết nối cơ sở dữ liệu cũng được bao gồm.

Nó không phải là một "tiêu chuẩn" của chính nó, nhưng nó sử dụng các tiêu chuẩn nổi tiếng, như REST, HTTP, JSON. Nó có xác thực xây dựng theo từng URI và chính sách bảo mật cho toàn bộ giao diện/phương thức. Hơn 800 trang tài liệu và toàn bộ các bài kiểm tra hồi quy được bao gồm. Để bắt đầu nhanh, take a look at the samples - Tôi nghi ngờ bạn có thể thấy dễ dàng.

Và nó miễn phí như một loại bia và giống như một con chim.

+2

Arnaud: Vâng, tôi nhìn dự án của bạn từ rất nhiều thời gian, tôi sẽ tìm ra giải pháp đơn giản hơn nhưng mORMot là một ứng cử viên tốt ... – philnext

+0

@philnext Tại sao bạn nghĩ mORMot không đơn giản? Nó có rất nhiều thứ, dựa trên một máy chủ RESTful. Nhưng sử dụng của nó là đồng bằng KISS: hãy xem các mẫu. Nó chỉ được một số người dùng sử dụng cho điều này, không có phần ORM hoặc SOA. Nhưng tôi nghĩ rằng giao diện dựa trên SOA, và JSON được xây dựng trong serialization, là một nhu cầu cho bạn. Khi ứng dụng RESTful của bạn sẽ phát triển, bạn sẽ không phải phát minh lại bánh xe! Có [nhiều hơn một lớp giao tiếp cần thiết] (http: //blog.synopse.info/post/2012/04/25/The-mORMot-thái độ), khi bạn muốn xây dựng một máy chủ RESTful cho một ứng dụng thực sự. –

+0

Như tôi biết chất lượng của các dự án của bạn, tôi nghĩ rằng, có, mORMot là đơn giản và sạch ORM. Nhưng bây giờ tôi chỉ muốn một giải pháp REST. Có thể là mORMot là ứng cử viên tốt nhất cho nó, và chắc chắn rằng tôi sẽ kiểm tra nó ... – philnext

Các vấn đề liên quan