-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
httperroryzer
Static analyzer to catch invalid uses of http.Error without a return statement which can cause expected bugs
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
I was in the same camp as you a few years ago and also wrote an utility to handle this. Might be of any interest to you.
https://github.com/barthr/web-util
> In the HTTP handlers it makes sense that you don't have return values, because: What would you do with that value exactly?
I think that approach used by clojure's ring shows an elegant way to represent http responses https://github.com/ring-clojure/ring/wiki/Concepts#responses. They are essentially structs with the following fields:
status := number
headers := map of string->string
body := stream | string | seq | inputstream
Request handlers are handed a request struct that is similar. The handler is a function that maps a request to a response (it doesn't actually write to streams itself).
I like this style for an http library for a couple of reasons:
1. HTTP resources can be viewed as functions whose domain is the request, and range is the response. Having the abstraction match that makes for really nice code.
The low level HTTP library is phenomenal for building more friendly packages on top, think of it as assembly language for HTTP in go. What isn't obvious about that Go http design is that it's very parallel. Your callback gets invoked in a goroutine for each request, so you can write easy to understand code, linearly, without worrying about things like promises or callbacks or message queues.
I'm opinionated here, because I also think all API's should be built starting from a spec, such as OpenAPI, and to that end, I've written a library to do just that, generate models and echo handlers from API specs, and other contributors have added gin, chi, etc [1]
1: https://github.com/deepmap/oapi-codegen
Related posts
-
what componies uses Clojure, and what componies deceased the use of other languages after additions of Clojure, for example Dropbox decrease the use of python after addition of Go programming language, are there any similar story with Clojure?
-
Coast on Clojure
-
is bulding rest apis with clojure a good idea ?
-
Donkey - new clojure HTTP lib by Appsflyer Engineering
-
Clojure na Web com Ring