我有一个Web服务,在设计时在TWebModule上定义了越来越多的TWebAction项目,并与OnAction事件相结合。
请求是HTTP GET通过URL和响应是'手工制作'JSON数据,即在运行时用'TSuperObject'.S['errormessage'] := lErrMsg;
之类的语句组成
我想用JSON数据将此更改为HTTP POST请求,然后使用SuperObjects TSuperRttiContext AsJSON 和 AsType 方法。
如何使用设计时间TWebactions 创建数据结构以映射/链接我的新“对象JSON(de)序列化”?这些对象都是不同的(一些属性可以在一个共同的祖先中),并且可能包含对象或记录属性本身(如FData: Array of TSubObject
[SuperObject可以序列化正常]等。)
注意:我已经使用了一个快速而脏的枚举类型来收集时序统计信息(也需要维护),这也可以集成。
type
TWebAct = (
ttinfo,
ttlogin,
...
ttgetcostitemlist,
ttgetvacationplanning
);
基本上,我想在添加新的TWebAction时尽量减少需要维护的地方数量。
答案 0 :(得分:1)
您可以使用TWebAct
枚举将一系列记录放在一起,将Web操作与各自的请求和响应结构联系起来。
type
// ancestor class for all requests and responses
TJSONStructure = class(TObject);
TJSONRequest = class(TJSONStructure);
TJSONRequestClass = class of TJSONRequest;
TJSONResponse = class(TJSONStructure);
TJSONResponseClass = class of TJSONResponse;
const
WEBACT_STRUCTURES: array[TWebAct] of
record
RequestClass: TJSONRequestClass;
ResponseClass: TJSONResponseClass;
end = (
{ttInfo} (RequestClass: TInfoRequest; ResponseClass: TInfoResponse)
, {ttLogin} (RequestClass: TLoginRequest; ResponseClass: TLoginResponse)
...
);