Introduction

The Generic HTTP Web Service (GHoWSt) project supports mapping native programming language semantics (domain objects, class methods, method arguments) to and from basic HTTP requests in a generic, dynamic way based on convention. HTTP methods (GET, POST, PUT, PATCH, DELETE) are used to work with resources as usual. This then all happens in reverse on the server.

The programmatic client uses any available dynamic proxy to translate class method calls to HTTP on the fly. In the case of C, the calling functions are written manually, but the invoker still does most of the lower level work. The server is getting more dynamic over time and presently uses a Java servlet. All the above might also be better understood with a pretty picture:

GHoWSt diagram

Motivation

GHoWSt is meant to require minimal effort for making Web service calls and doesn't involve hypermedia, a separate domain specific language, a special compiler, or call for something like an OpenAPI Specification (OAS). For describing the Web service, the server ideally uses, for example, a class interface in the case of Java, which it translates to a simplified form via reflection and then serves as an HTML list of methods and parameters at the root service URL to aid the human programmer. Making further OPTIONS requests to resources is being added.

I made this in part to help me learn and practice a variety of languages and toolchains, as well to provide a simple way for members of my household to do fun and silly networking stuff with whatever language or OS is preferred or available!

Currently supported languages and their client and server GitHub repositories

Further information