HashLoad / horse

Fast, opinionated, minimalist web framework for Delphi
MIT License
1.17k stars 217 forks source link
api delphi embarcadero fpc framework freepascal horse lazarus middlewares minimalist rest restful web webservices

Horse


Horse is an Express inspired web framework for Delphi and Lazarus.
Designed to ease things up for fast development in a minimalist way and with high performance.


## ⚙️ Installation Installation is done using the [`boss install`](https://github.com/HashLoad/boss) command: ``` sh boss install horse ``` * (Optional) Install [**wizard**](https://github.com/HashLoad/horse-wizard) ## ⚡️ Quickstart Delphi ```delphi uses Horse; begin THorse.Get('/ping', procedure(Req: THorseRequest; Res: THorseResponse) begin Res.Send('pong'); end); THorse.Listen(9000); end. ``` ## ⚡️ Quickstart Lazarus ```delphi {$MODE DELPHI}{$H+} uses Horse; procedure GetPing(Req: THorseRequest; Res: THorseResponse); begin Res.Send('Pong'); end; begin THorse.Get('/ping', GetPing); THorse.Listen(9000); end. ``` ## 🧬 Official Middlewares For a more _maintainable_ middleware _ecosystem_, we've put official middlewares into separate repositories: | Middleware | Delphi | Lazarus | | ------------------------------------------------------------------- | -------------------- | --------------------------- | | [horse/json](https://github.com/HashLoad/jhonson) |    ✔️ |     ✔️ | | [horse/basic-auth](https://github.com/HashLoad/horse-basic-auth) |    ✔️ |     ✔️ | | [horse/cors](https://github.com/HashLoad/horse-cors) |    ✔️ |     ✔️ | | [horse/stream](https://github.com/HashLoad/horse-octet-stream) |    ✔️ |     ✔️ | | [horse/jwt](https://github.com/HashLoad/horse-jwt) |    ✔️ |     ✔️ | | [horse/exception](https://github.com/HashLoad/handle-exception) |    ✔️ |     ✔️ | | [horse/logger](https://github.com/HashLoad/horse-logger) |    ✔️ |     ✔️ | | [horse/compression](https://github.com/HashLoad/horse-compression) |    ✔️ |     ✔️ | ## 🌱 Third Party Middlewares This is a list of middlewares that are created by the Horse community, please create a PR if you want to see yours! | Middleware | Delphi | Lazarus | | ---------------------------------------------------------------------------------------------------------- | -------------------- | --------------------------- | | [bittencourtthulio/etag](https://github.com/bittencourtthulio/Horse-ETag) |    ✔️ |     ✔️ | | [bittencourtthulio/paginate](https://github.com/bittencourtthulio/Horse-Paginate) |    ✔️ |     ✔️ | | [bittencourtthulio/cachecontrol](https://github.com/bittencourtthulio/horse-cachecontrol) |    ✔️ |     ❌ | | [gabrielbaltazar/gbswagger](https://github.com/gabrielbaltazar/gbswagger) |    ✔️ |     ❌ | | [willhubner/socketIO](https://github.com/WillHubner/Horse-SocketIO) |    ✔️ |     ❌ | | [dliocode/ratelimit](https://github.com/dliocode/horse-ratelimit) |    ✔️ |     ❌ | | [dliocode/slowdown](https://github.com/dliocode/horse-slowdown) |    ✔️ |     ❌ | | [giorgiobazzo/upload](https://github.com/giorgiobazzo/horse-upload) |    ✔️ |     ❌ | | [dliocode/query](https://github.com/dliocode/horse-query) |    ✔️ |     ❌ | | [CarlosHe/healthcheck](https://github.com/CarlosHe/horse-healthcheck) |    ✔️ |     ❌ | | [CarlosHe/staticfiles](https://github.com/CarlosHe/horse-staticfiles) |    ✔️ |     ❌ | | [CachopaWeb/horse-server-static](https://github.com/CachopaWeb/horse-server-static) |    ✔️ |     ✔️ | | [arvanus/horse-exception-logger](https://github.com/arvanus/horse-exception-logger) |    ✔️ |     ✔️ | | [claudneysessa/Horse-CSResponsePagination](https://github.com/claudneysessa/Horse-CSResponsePagination) |    ✔️ |     ❌ | | [claudneysessa/Horse-XSuperObjects](https://github.com/claudneysessa/Horse-XSuperObjects) |    ✔️ |     ❌ | | [andre-djsystem/horse-bearer-auth](https://github.com/andre-djsystem/horse-bearer-auth) |    ✔️ |     ✔️ | | [andre-djsystem/horse-manipulate-request](https://github.com/andre-djsystem/horse-manipulate-request) |    ✔️ |     ✔️ | | [andre-djsystem/horse-manipulate-response](https://github.com/andre-djsystem/horse-manipulate-response) |    ✔️ |     ✔️ | | [antoniojmsjr/Horse-IPGeoLocation](https://github.com/antoniojmsjr/Horse-IPGeoLocation) |    ✔️ |     ❌ | | [antoniojmsjr/Horse-XMLDoc](https://github.com/antoniojmsjr/Horse-XMLDoc) |    ✔️ |     ❌ | | [isaquepinheiro/horse-jsonbr](https://github.com/HashLoad/JSONBr) |    ✔️ |     ❌ | | [IagooCesaar/Horse-JsonInterceptor](https://github.com/IagooCesaar/Horse-JsonInterceptor) |    ✔️ |     ❌ | | [dliocode/horse-datalogger](https://github.com/dliocode/horse-datalogger) |    ✔️ |     ❌ | | [marcobreveglieri/horse-prometheus-metrics](https://github.com/marcobreveglieri/horse-prometheus-metrics) |    ✔️ |     ❌ | ## Delphi Versions `Horse` works with Delphi 11 Alexandria, Delphi 10.4 Sydney, Delphi 10.3 Rio, Delphi 10.2 Tokyo, Delphi 10.1 Berlin, Delphi 10 Seattle, Delphi XE8 and Delphi XE7. ## 💻 Code Contributors ## ⚠️ License `Horse` is free and open-source software licensed under the [MIT License](https://github.com/HashLoad/horse/blob/master/LICENSE). ## 📐 Tests ![tests](https://github.com/GlerystonMatos/horse/workflows/tests/badge.svg) ![Console Coverage ](https://img.shields.io/badge/console%20coverage-45%25-blue) ![VCL Coverage ](https://img.shields.io/badge/vcl%20coverage-43%25-blue)