delphimvcframework/samples/swaggerdoc/MyController1U.pas

72 lines
1.8 KiB
ObjectPascal
Raw Normal View History

2019-07-27 20:23:48 +02:00
unit MyController1U;
interface
uses
MVCFramework,
MVCFramework.Commons,
MVCFramework.Swagger.Commons,
MVCFramework.Middleware.Authentication.RoleBasedAuthHandler;
2019-07-27 20:23:48 +02:00
const
INDEX_JSON_SCHEMA =
'{' + sLineBreak +
' "type": "object",' + sLineBreak +
' "properties": {' + sLineBreak +
' "application": {' + sLineBreak +
' "type": "string",' + sLineBreak +
' "description": "Application Name"' + sLineBreak +
' },' + sLineBreak +
' "online": {' + sLineBreak +
' "type": "boolean",' + sLineBreak +
' "description": "Defines if the server is online"' + sLineBreak +
' },' + sLineBreak +
' "serverdatetime": {' + sLineBreak +
' "type": "string",' + sLineBreak +
' "description": "Current server time"' + sLineBreak +
' }' + sLineBreak +
' }' + sLineBreak +
'}';
2019-07-27 20:23:48 +02:00
type
[MVCPath('/status')]
TMyController1 = class(TMVCController)
public
[MVCPath('')]
[MVCSwagSummary('Status', 'API Status')]
[MVCSwagResponses(200, 'Success', INDEX_JSON_SCHEMA)]
2019-07-27 20:23:48 +02:00
[MVCSwagResponses(500, 'Internal Server Error')]
[MVCProduces(TMVCMediaType.APPLICATION_JSON)]
[MVCHTTPMethod([httpGET])]
procedure Index;
end;
implementation
uses
JsonDataObjects,
System.SysUtils,
System.DateUtils,
MVCFramework.Controllers.Register;
{ TMyController1 }
2019-07-27 20:23:48 +02:00
procedure TMyController1.Index;
var
LObj: TJDOJsonObject;
begin
LObj := TJDOJsonObject.Create;
LObj.S['application'] := Context.Config[TMVCConfigKey.ServerName];
LObj.B['online'] := True;
LObj.S['serverdatetime'] := DateToISO8601(Now);
Render(LObj);
end;
initialization
TControllersRegister.Instance.RegisterController(TMyController1, 'MyServerName');
end.