最精簡使用mORMot (二)

海利鸟發表於2024-04-24

最精簡使用mORMot [關於REST和WS]

本文非原創,找了幾個出處沒有找到原始連線,特意整理收藏
以下是關於“最精簡使用mORMot”的完整攻略,包括基本概念、步驟和兩個示例說明。

基本概念

mORMot是一個開源的Object Pascal框架,用於構建高效能可擴充套件的Web應用程式和服務。它提供了一組強大的工具和庫,包括ORM、RESTful API、WebSockets、JSON、XML、SQLite、Redis等。使用mORMot可以快速構建高效的Web應用程式和服務。

步驟

以下是使用mORMot構建Web應用程式和服務的步驟:

  1. 安裝mORMot:首先,我們需要下載並安裝mORMot框架。可以從官方網站或GitHub上下載最新版本的mORMot框架。
  2. 建立專案:建立一個新的Object Pascal專案,並將mORMot框架新增到專案中。例如,我們可以使用以下程式碼新增mORMot框架:
uses 
  SynCommons, mORMot;
  1. 定義資料模型:定義一個資料模型,例如:
   type
     TUser = class(TSQLRecord)
     private
       FName: RawUTF8;
       FEmail: RawUTF8;
     published
       property Name: RawUTF8 read FName write FName;
       property Email: RawUTF8 read FEmail write FEmail;
     end;

在程式碼中,我們定義了一個名為TUser的資料模型,該模型包含Name和Email兩個屬性。

  1. 定義服務:定義一個服務,例如:
   type
     TMyService = class(TServiceContainer)
     public
       function GetUser(const AID: Integer): TUser;
     end;

function TMyService.GetUser(const AID: Integer): TUser;
   begin
     Result := TUser.Create;
     Result.Name := 'John Doe';
     Result.Email := 'john.doe@example.com';
   end;

在程式碼中,我們定義了一個名為TMyService的服務,該服務包含一個名為GetUser的方法,該方法返回一個TUser物件。

  1. 啟動服務:啟動服務並監聽指定埠,例如:
var
     Server: TSQLHttpServer;
   begin
     Server := TSQLHttpServer.Create('8080', [TMyService.Create]);
     Server.AccessControlAllowOrigin := '*';
     Server.AccessControlAllowHeaders := 'Content-Type';
     Server.AccessControlAllowMethods := 'GET, POST, PUT, DELETE';
     Server.AccessControlMaxAge := 86400;
     Server.Run;
   end;

在程式碼中,我們建立了一個名為Server的TSQLHttpServer物件,並將TMyService服務新增到該物件中。然後,我們設定了一些跨域資源共享(CORS)選項,並啟動了HTTP伺服器。

示例

以下是兩個使用mORMot構建Web應用程式和服務的示例:

示例一:使用mORMot構建RESTful API

假設我們需要使用mORMot構建一個RESTful API,可以使用以下步驟:

  1. 安裝mORMot:從官方網站或GitHub上下載最新版本的mORMot框架,並將其新增到Object Pascal專案中。
  2. 定義資料模型:定義一個資料模型,例如:
   type
     TUser = class(TSQLRecord)
     private
       FName: RawUTF8;
       FEmail: RawUTF8;
     published
       property Name: RawUTF8 read FName write FName;
       property Email: RawUTF8 read FEmail write FEmail;
     end;

在程式碼中,我們定義了一個名為TUser的資料模型,該模型包含Name和Email兩個屬性。

  1. 定義服務:定義一個服務,例如:
type
     TMyService = class(TServiceContainer)
     public
       GetUser(const AID: Integer): TUser;
     end;

function TMyService.GetUser(const AID: Integer): TUser;
   begin
     Result := TUser.Create;
     Result.Name := 'John Doe';
     Result.Email := 'john.doe@example.com';
   end;

在程式碼中,我們定義了一個名為TMyService的服務,該服務包含一個名為GetUser的方法,該方法返回一個TUser物件。

  1. 啟動服務:啟動服務並監聽指定埠,例如:
   var
     Server: TSQLHttpServer;
   begin
     Server := TSQLHttpServer.Create('8080', [TMyService.Create]);
     Server.AccessControlAllowOrigin := '*';
     Server.AccessControlAllowHeaders := 'Content-Type';
     Server.AccessControlAllowMethods := 'GET, POST, PUT, DELETE';
     Server.AccessControlMaxAge := 86400;
     Server.Run;
   end;

在程式碼中,我們建立了一個名為Server的TSQLHttpServer物件,並將TMyService服務新增到該物件中。然後,我們設定了一些CORS選項,並啟動了HTTP伺服器。

  1. 測試API:使用HTTP客戶端測試API,例如:

GET http://localhost:8080/user/1

在程式碼中,我們使用HTTP客戶端傳送GET請求到指定URL,獲取ID為1的使用者資訊。

示例二:使用mORMot構建WebSocket服務

假設我們需要使用mORMot構建一個WebSocket服務,可以使用以下步驟:

  1. 安裝mORMot:從官方網站或GitHub上下載最新版本的mORMot框架,並將其新增到Object Pascal專案中。
  2. 定義WebSocket服務:定義一個WebSocket服務,例如:
   type
     TMyWebSocket = class(TSQLWebSocket)
     public
       procedure OnMessage(const Text: RawUTF8); override;
     end;

procedure TMyWebSocket.OnMessage(const Text: RawUTF8);
   begin
     Send('Hello, ' + Text + '!');
   end;

在程式碼中,我們定義了一個名為TMyWebSocket的WebSocket服務,該服務包含一個名為OnMessage的方法,該方法在接收到訊息時傳送回覆訊息。

  1. 啟動WebSocket服務:啟動WebSocket服務並監聽指定埠,例如:
   var
     Server: TSQLWebSocketServer;
   begin
     Server := TSQLWebSocketServer.Create('8080', [TMyWebSocket]);
     Server.Run;
   end;

在程式碼中,我們建立了一個名為Server的TSQLWebSocketServer物件,並將TMyWebSocket服務新增到該物件中。然後,我們啟動了WebSocket伺服器。

  1. 測試WebSocket服務:使用WebSocket客戶端測試服務,例如:

ws://localhost:8080/

在程式碼中,我們使用WebSocket客戶端連線到指定URL,併傳送訊息。當服務接收到訊息時,將回復訊息。

結論

以上是關於“最精簡使用mORMot”的完整攻略,我們介紹了基本概念、步驟和兩個示例說明。使用mORMot可以快速構建高效的Web應用程式和服務,包括RESTful、WebSocket等。我們提供了兩個使用mORMot構建Web應用程式和服務的示例,希望能夠幫助您更好地瞭解這個過程。

相關文章