Delphi 语言 RESTful API设计实战案例

Delphi阿木 发布于 2025-06-19 6 次阅读


Delphi 语言 RESTful API 设计实战案例

随着互联网技术的飞速发展,RESTful API 已经成为现代软件开发中不可或缺的一部分。Delphi 语言作为一种功能强大的编程语言,同样可以用来设计和实现 RESTful API。本文将围绕 Delphi 语言 RESTful API 设计实战案例,详细介绍如何使用 Delphi 语言构建一个简单的 RESTful 服务,并展示其实际应用。

环境准备

在开始之前,我们需要准备以下环境:

1. Delphi XE7 或更高版本

2. FireDAC 数据库连接组件

3. RESTful API 客户端组件(如 TMS Aurelius REST Client)

案例背景

假设我们需要设计一个简单的 RESTful API,用于管理一个图书数据库。该 API 将提供以下功能:

1. 获取所有图书信息

2. 根据图书 ID 获取特定图书信息

3. 添加新图书

4. 更新图书信息

5. 删除图书

实战步骤

1. 创建 Delphi 项目

在 Delphi 中创建一个新的项目,选择“空项目”模板。

2. 添加组件

在项目中添加以下组件:

- TFDConnection:用于连接数据库

- TFDQuery:用于执行 SQL 查询

- TMS Aurelius REST Client:用于构建 RESTful API

3. 配置数据库连接

在 TFDConnection 组件中配置数据库连接信息,例如:

delphi

FDConnection1.DatabaseName := 'YourDatabaseName';


FDConnection1.Params.Clear;


FDConnection1.Params.Add('DriverID=MySQL');


FDConnection1.Params.Add('ServerName=localhost');


FDConnection1.Params.Add('Port=3306');


FDConnection1.Params.Add('Database=YourDatabaseName');


FDConnection1.Params.Add('User_Name=YourUsername');


FDConnection1.Params.Add('Password=YourPassword');


FDConnection1.Params.Add('ParamsCharSet=UTF8');


FDConnection1.Params.Add('ParamsUseUTF8=true');


FDConnection1.Open;


4. 创建图书数据模型

在项目中创建一个 TMS Aurelius REST Client 组件,用于定义图书数据模型:

delphi

TBook = class(TMSAureliusRESTModel)


private


FID: Integer;


FTitle: string;


FAuthor: string;


FPrice: Double;


public


property ID: Integer read FID write FID;


property Title: string read FTitle write FTitle;


property Author: string read FAuthor write FAuthor;


property Price: Double read FPrice write FPrice;


end;


5. 实现 RESTful API 接口

接下来,我们将为每个功能实现 RESTful API 接口。

5.1 获取所有图书信息

在 TMS Aurelius REST Client 组件中,添加以下代码:

delphi

procedure TForm1.GetBooks;


var


LBook: TBook;


LBooks: TObjectList<TBook>;


begin


LBooks := TObjectList<TBook>.Create;


try


FDQuery1.SQL.Text := 'SELECT FROM books';


FDQuery1.Open;


while not FDQuery1.Eof do


begin


LBook := TBook.Create;


LBook.ID := FDQuery1.FieldByName('id').AsInteger;


LBook.Title := FDQuery1.FieldByName('title').AsString;


LBook.Author := FDQuery1.FieldByName('author').AsString;


LBook.Price := FDQuery1.FieldByName('price').AsFloat;


LBooks.Add(LBook);


FDQuery1.Next;


end;


// 返回 JSON 格式的图书列表


Response.Content := TJsonConverter.Serialize(LBooks);


finally


LBooks.Free;


end;


end;


5.2 根据图书 ID 获取特定图书信息

在 TMS Aurelius REST Client 组件中,添加以下代码:

delphi

procedure TForm1.GetBookByID(AID: Integer);


var


LBook: TBook;


begin


FDQuery1.SQL.Text := 'SELECT FROM books WHERE id = :id';


FDQuery1.ParamByName('id').AsInteger := AID;


FDQuery1.Open;


if not FDQuery1.Eof then


begin


LBook := TBook.Create;


LBook.ID := FDQuery1.FieldByName('id').AsInteger;


LBook.Title := FDQuery1.FieldByName('title').AsString;


LBook.Author := FDQuery1.FieldByName('author').AsString;


LBook.Price := FDQuery1.FieldByName('price').AsFloat;


// 返回 JSON 格式的图书信息


Response.Content := TJsonConverter.Serialize(LBook);


end


else


Response.StatusCode := 404;


end;


5.3 添加新图书

在 TMS Aurelius REST Client 组件中,添加以下代码:

delphi

procedure TForm1.AddBook(ABook: TBook);


begin


FDQuery1.SQL.Text := 'INSERT INTO books (title, author, price) VALUES (:title, :author, :price)';


FDQuery1.ParamByName('title').AsString := ABook.Title;


FDQuery1.ParamByName('author').AsString := ABook.Author;


FDQuery1.ParamByName('price').AsFloat := ABook.Price;


FDQuery1.ExecSQL;


ABook.ID := FDQuery1.FieldByName('last_insert_rowid').AsInteger;


end;


5.4 更新图书信息

在 TMS Aurelius REST Client 组件中,添加以下代码:

delphi

procedure TForm1.UpdateBook(ABook: TBook);


begin


FDQuery1.SQL.Text := 'UPDATE books SET title = :title, author = :author, price = :price WHERE id = :id';


FDQuery1.ParamByName('title').AsString := ABook.Title;


FDQuery1.ParamByName('author').AsString := ABook.Author;


FDQuery1.ParamByName('price').AsFloat := ABook.Price;


FDQuery1.ParamByName('id').AsInteger := ABook.ID;


FDQuery1.ExecSQL;


end;


5.5 删除图书

在 TMS Aurelius REST Client 组件中,添加以下代码:

delphi

procedure TForm1.DeleteBook(AID: Integer);


begin


FDQuery1.SQL.Text := 'DELETE FROM books WHERE id = :id';


FDQuery1.ParamByName('id').AsInteger := AID;


FDQuery1.ExecSQL;


end;


总结

通过以上步骤,我们使用 Delphi 语言成功设计并实现了一个简单的 RESTful API。在实际应用中,可以根据需求扩展 API 功能,例如添加用户认证、日志记录等。Delphi 语言在构建 RESTful API 方面具有强大的功能和丰富的组件支持,是开发高性能、可扩展的 Web 应用的理想选择。