For dynamic languages I'd recommend using an http library directly.
Consider the code without a generated client code:
client.get("/hello")
And the code with a generated client
client.hello()
In a dynamic language they're about the same.
But in a statically typed language
- I know the second case is calling a route that exists
- The response is typed
- If there is request data or query parameters the language helps me use them correctly
- My editor displays documentation about the request if I hover over it, including if it has been deprecated
For dynamic languages I'd recommend using an http library directly.
Consider the code without a generated client code:
client.get("/hello")
And the code with a generated client
client.hello()
In a dynamic language they're about the same.
But in a statically typed language
- I know the second case is calling a route that exists
- The response is typed
- If there is request data or query parameters the language helps me use them correctly
- My editor displays documentation about the request if I hover over it, including if it has been deprecated