Introducing MARS-Curiosity: a new Delphi REST library

I am very happy to introduce this project I am working on since a while (v1.0 released today!):


MARS-Curiosity, a REST library for Embarcadero Delphi

Pure REST approach, standard concepts in a familiar Delphi flavor (including a component based client library).

The main purpose of this library is to provide an easy but flexible way to implement a REST application server in Delphi and it also includes an easy to use client library to obtain the most from our beloved language and IDE, shortening the project’s time-to-market (a key element to achieve success nowadays).

I love Delphi and I use it everyday in my work as software developer and trainer here in Italy (I started >15 years ago with Delphi 2!). During 2014, while giving a training course to some experienced Delphi developers, I started (just for fun) to build a real-world example to showcase some of the language features that makes Delphi a modern language (attributes and RTTI, anonymous methods, dependency injection basics). From that starting point, I have been actively working on this project and today it is a powerful and handy library (to me and to some of my customers, at least) that I really want to share with any other Delphi developer in the world.

The challenges we are facing these days as software developers include being able to build software systems able to server clients built with a variety of technologies as never before.
Web applications, mobile applications, service integrations and desktop applications are now often geographically distributed and have to deal with intermittent and unstable network connectivity. The de-facto standard the software development industry has chosen to deal with the current scenario is without any doubt the REST approach (based on Roy Fielding work, dated 2000).

It is very easy to state that http and JSON are now so popular we can consider them a lingua franca (universal language) and that they act as building blocks for many software system (already in production and under construction these days).

If you are not convinced about this, just think about the Internet as we know today you will easily spot (almost in every website out there) the founding concepts of the MARS-Curiosity technology: stateless interaction (http), authorization and authentication techniques (JWT), data and content serialization (JSON, documents, images, streams, …), cross-platform and technology agnostic communications (build clients for every known platform out there).

I am aware of many other REST technologies out there (from Embarcadero and other open-source and commercial projects) and I really think that having multiple choices in these area is a very good and important fact for the Delphi community. I think there is room for all, given every one of these technologies has its own weakness and strengths and I hope you will give a try to my approach.

Any contribution will be appreciated and feel free to let me know what you think about this project or any other suggestion you may want to share. More blog posts will follow covering how to get started with the library and some examples.

Here is a Getting started video:

And here you can find slides (used in the video).

Stay tuned! 😉




* The Delphi stylized helmet icon is trademark of Embarcadero Technologies.

9 thoughts on “Introducing MARS-Curiosity: a new Delphi REST library

  1. I recommend using individual Markdown documents for your repository’s documentation rather than the GitHub “Wiki” system.
    Reason being that the documentation is then married to each commit in the history of the repository, and it also makes the full documentation available alongside the source.

    I’ll have a play with this library later and give you my thoughts and feedback on it. Appreciate the efforts 🙂

  2. Rollo says:

    This is a very nice project, but unfortunately I cannot use it since you use DataSnap components, and I’m on RadStudio Professional.

    Are you planning to use FireDAC-only components, to allow a broader audience ?


    1. Andrea Magni says:

      Hi, yes, I’d like to split the library into more modular packages, allowing people to install only some packages (according to their edition of Delphi).
      The core should just compile and work also on the Professional edition.

      Thanks and stay tuned 😉

      1. Lucian says:

        Can this library be used with Professional edition at all?

        1. Andrea Magni says:

          The current version of the (single) package includes all source files so you may not be able to compile it with a Professional version of Delphi.
          But if you include the source folder to your library path, you should be able to compile the HelloWorld example (and all the other demos that does not involve FireDAC and DataSnap dependencies).

          Please try and let me know (I don’t have a Professional version installed so I can’t check directly).


  3. Andrea Magni says:

    Hi, I am trying to add support for different Delphi editions to MARS-Curiosity. Please have a look here:

    Your opinions are welcome!

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.