mORMot 的调试一定要记录一下,由于他封装了,而且如果一旦用的是“第三方”的“第三方”,由于经过的进一步封装,导致内部关系看不清了。
1:通过 Delphi 内部的REST Debugger可以方便调试,但在调试前要清楚定义的接口是否包含认证。
2:通过浏览器也可以调试。但需要知道mORMot 参数机制,比如要给WEB API方,他的参数是怎么定义的,如果是函数他的返回结果是怎么定义的。
比如
type IServiceMethods = interface(IInvokable) ['{B963CED7-8F03-4484-9DD7-819598E65D69}'] function Sum(val1, val2: Double): Double; function Mult(val1, val2: Double): Double; function RandomNumber: Int64; function DelCMDHis(const aCMD_ID: string): boolean; overload; function DelCMDHisID(const aID: integer): boolean; overload; end; TServiceMethods = class(TInjectableObject, IServiceMethods) public function Sum(val1, val2: Double): Double; function Mult(val1, val2: Double): Double; function RandomNumber: Int64; function DelCMDHis(const aCMD_ID: string): boolean; overload; function DelCMDHisID(const aID: integer): boolean; overload; end;
客户端要调试 Sum 这个WEB API,那么需要知道,
- 服务器的认证方式,
- “根”的名字也就是模型关联名字;
- 方法“组”的名字,也就是接口实例名。
- 然后参数都是数组
- 结果都是 Result的json
http://192.168.22.30:8099/root/ServiceMethods/RandomNumber
假设服务器端没有认证。
执行的结果将是
如果调用的是Sum,那么可以推导将会是 http://192.168.22.30:8099/root/ServiceMethods/Sum
另外由于需要传递参数我们通过POST方式,那么——
这里需要注意结果和参数的表达方式。