vložil Radek Červinka
21. května 2024 21:31
Doplním starší příspěvek DMVC o jednohubku jako je ukázka jednoduchého předání dat a založení dat. Po přečtení první části doplníme náš REST server o POST, tj. vytvoření záznamu.
type
[MVCNameCase(ncLowerCase)]
TTown = class
private
FName: string;
FPostCode: string;
public
[MVCSwagJsonSchemaField('name', 'town name', True, False)]
property Name: string read FName write FName;
[MVCSwagJsonSchemaField('postcode', 'post code', True, False)]
property PostCode: string read FPostCode write FPostCode;
end;
[MVCPath('/town')]
[MVCSwagAuthentication(atJsonWebToken)]
TCtrlTown = class(TMVCController)
public
[MVCPath('/($Id)')]
[MVCHTTPMethod([httpGET])]
{$IFNDEF DEBUG} [MVCRequiresRole('role1')] {$ENDIF}
[MVCSwagSummary('Town section', 'Town by Id', 'GetTown')]
[MVCSwagParam(plPath, 'Id', 'Town id', ptInteger)]
[MVCSwagParam(plQuery, 'params', 'Params', ptString)]
[MVCSwagResponses(200, 'Success', TTown)]
[MVCSwagResponses(401, 'Unauthorized')]
[MVCSwagResponses(500, 'Internal Server Error')]
procedure GetTown(const Id: Integer);
{$IFNDEF DEBUG} [MVCRequiresRole('role1')] {$ENDIF}
[MVCDoc('create Town and return "201: Created"')]
[MVCPath('/')]
[MVCHTTPMethod([httpPOST])]
[MVCSwagSummary('Town section', 'Item create', 'CreateItem')]
[MVCSwagParam(plBody, 'town', 'TownObject object', TTown, ptNotDefined, True, ' { "name": "Zlín", "postcode":"76340" }')]
[MVCSwagResponses(201, 'Success, Data get new created ID')]
[MVCSwagResponses(405, 'Failed')]
[MVCSwagResponses(500, 'Internal Server Error')]
procedure CreateItem();
end;
Více...
a9c510e7-80d2-4696-838e-33e00fd1a110|6|5.0
Tagy: DMVC
vložil Radek Červinka
14. října 2021 20:47
Je to už neuvěřitelných 7 let, kdy jsem se zmínil o Delphi MVC frameworku a musím říct, že když jsem tehdy říkal, že mi přijde jako nejprogresivnější tak jsem nelhal.
Od té doby zrobustněl, bylo přidáno spousta funkcí (jako podpora swaggeru, JWT autentizaci, JSON-RPC 2.0, Cors a desítky dalších), nebudu to tady vyjmenovávat, ale přímo odkáži na github.com/danieleteti/delphimvcframework. Součástí archívu je spousta dem. Výhodou je taky kompletní zdrojový kód.
Cílem dnešního článku je ukázat jak jednoduše vytvoříte základní službu (celý REST full je podobně jednoduchý) odpovídající na vaše pořadavky.
Více...
vložil Radek Červinka
20. února 2014 23:04
Daniele Teti (pracuje myslím pro italské zastoupení EMBT) otevřel svůj MVC framework pro Delphi (primárně pro webové řešení) a musím uznat, že to má něco do sebe.
Domovská stránka: github.com/danieleteti/delphimvcframework.
Vlastnosti:
- RESTful (RMM Level 3) compliant
- Server side generované stránky za použití eLua (Embedded Lua)
- Messaging extension using STOMP (to nevím co je)
- možnost load balance via memcached (memcached.org)
- Fancy URL s mapováním parametrů
- Integravaný RESTClient
- pro XE4 and XE5 (testováno, ale mělo by fungovat v XE3 nebo XE2)
- Experimental podpora pro IOCP
Ukázka:
unit RenderSampleControllerU;
interface
uses
MVCFramework, MVCFramework.Commons, ObjectsMappers;
type
[MVCPath('/')]
TRenderSampleController = class(TMVCController)
public
[MVCHTTPMethod([httpGet])]
[MVCPath('/customers/($id).html')]
[MVCConsumes('text/html')]
[MVCProduces('text/html', 'UTF-8')]
procedure GetPerson_AsText(CTX: TWebContext);
[MVCHTTPMethod([httpGet])]
[MVCPath('/customers')]
[MVCProduces('application/json')]
procedure GetCustomers_AsDataSet(CTX: TWebContext);
[MVCHTTPMethod([httpGet])]
[MVCPath('/customers/($id)')]
[MVCProduces('application/json')]
procedure GetCustomerByID_AsTObject(CTX: TWebContext);
[MVCHTTPMethod([httpGet])]
[MVCPath('/customers.json')]
[MVCProduces('application/json')]
procedure GetPersonJSON(CTX: TWebContext);
end;
Více...