HTTP berichten inkomend
Tables
CFL HttpMessage
procedure CFLProcess
procedure CFLProcess()
Verwerk de binnenkomende request. Deze functie wordt aangeroepen vanuit de CFL Http Message Api pagina voor binnenkomende rest api calls. Deze functie leidt door naar het event "CFLonCFLProcess* waarin de eigenlijke verwerking dan gebeurt door de subscribers op dit event.
event CFLOnCFLProcess
[EventSubscriber(ObjectType::Table, Database::"CFL HttpMessage", 'CFLOnCFLProcess', '', true, true)]
local procedure HelloWorld(var Sender: Record "CFL HttpMessage")
begin
end;
Subscribe op deze functie om een binnekomende API request op te vangen en te verwerken.
Na je verwerking kan je via de fucntie CFLSetResponse het antwoord van de request instellen.
Via het veld CFL Delete After Processing kan je instellen of het bericht mag verwijderd worden na de verwerking.
event CFLOnAfterProcess
[EventSubscriber(ObjectType::Table, Database::"CFL HttpMessage", 'CFLOnAfterProcess', '', true, true)]
local procedure HelloWorld(var Sender: Record "CFL HttpMessage")
begin
end;
Subscribe op deze functie om een binnekomende API request op te vangen na de verwerking.
Voorbeeld
In de codeunit CFL HTTP Message Management zit deze event subscriber:
[EventSubscriber(ObjectType::Table, Database::"CFL HttpMessage", 'CFLOnCFLProcess', '', true, true)]
local procedure HelloWorld(var Sender: Record "CFL HttpMessage")
var
JsonObject: JsonObject;
begin
if JsonObject.ReadFrom(Sender.CFLGetContent()) then begin
if (JsonValue(JsonObject, 'Type') = 'API') and (JsonValue(JsonObject, 'Method') = 'HelloWorld') then begin
Sender.CFLSetResponse(StrSubstNo('Hello %1 !', JsonValue(JsonObject, 'Params')));
Sender.Modify(true);
exit;
end;
end;
end;
De body gebruikt in dit voorbeeld ziet er als volgt uit:
{
"Type":"API",
"Method":"HelloWorld",
"Params":"LOCALTEST\\ADMIN_CHRISTIAENS"
}
Hierbij wordt dus de binnenkomende request opgevangen via het event en wordt de inhoud gelezen. Indien de inhoud Type = API en Method=HelloWorld bevat dan wordt hier het antwoord ingesteld. Op deze manier is het dus vrij eenvoudig om door bvb een andere 'Method' op te nemen in call, om een eigen verwerking te voorzien. Uiteraard is het mogelijk om een andere json structuur als inhoud te gebruiken en de verwerking dan daarop te voorzien.