Datasanp REST服务器方法返回结果有其自定义格式,以EchoString方法为例,默认格式:{"result":["1234"]};这种默认格式在和第三方系统对接时,会出现格式不一致的问题。
为了自定义返回结果的格式,需要在 TDSHTTPService控件的 OnFormatResult事件中对返回结果格式进行处理,
1、前台返回的结果为数组[],不带result节点,以EchoString方法为例,返回格式:["1234"],代码如下:
procedure TServerContainer1.DSHTTPService1FormatResult(Sender: TObject;
var ResultVal: TJSONValue; const Command: TDBXCommand; var Handled: Boolean);
begin
Handled := True;
end;
2、前台返回的结果和服务器返回的结果完全一致,以EchoString方法为例,返回格式:“1234”,代码如下:
procedure TServerContainer1.DSHTTPService1FormatResult(Sender: TObject;
var ResultVal: TJSONValue; const Command: TDBXCommand; var Handled: Boolean);
var
JSONValue: TJSONValue;
temp: string;
begin
// 获得类名.方法名
temp := Command.Text;
if temp.ToUpper = UpperCase('TServerMethods.EchoString') then
begin
Handled := True;
JSONValue := ResultVal;
ResultVal := TJSONArray(JSONValue).Get(0);
TJSONArray(JSONValue).Remove(0);
JSONValue.Free;
end;
end;
注:通过在OnFormatResult事件中,根据不同的方法名可以返回不同的格式。
参考文章:https://blog.csdn.net/jeff_wdj/article/details/78398084