Comments (6)
I think the best you might be able to do is attach a set of generic properties (very untyped in general) that provides hints to the backend if that backend supports it.
But I think this would need to be per-request so that per-request "hints" would work. There may be an easy way to accommodate this somehow by using a more clever .send
method that takes a "hint" object, specific to the backend for those that just gotta have it. That way people that don't need portability fo the actual code can do something backend-specific each time. I find that for libraries like sttp, as long as its API is portable in concept, its close enough that I benefit from using it in multiple programs but where I need to be specific to a platform, I need to do that.
from sttp.
@aappddeevv the "hints" you mention are already there: each request carries a tags: Map[String, Any]
, which is used e.g. by the brave backend to carry the trace id.
from sttp.
Oh...however, I don't see that on the async backend, which is pretty much all I use these days.
from sttp.
@aappddeevv hm ... maybe I misunderstood you then, that's a field on the Request
data structure, so is available in any backend in the send
method :)
from sttp.
Yes. If its one thing I have learned, its crazy HTTP request wild-west world out there. You could also overload .send to be backend specific with a hints object so that at least when sending, you have statically typed "options" for sending. That ties you to a backend, but I think that this is Ok because when you need it, you need it.
from sttp.
This can be implemented independently of sttp, in a more general way: we don't need to do anything HTTP-specific, but to rate-limit an F[T]
effect. Similar reasoning applies as in #23. Also in this case, we've documented how to use an external rate limiter: https://sttp.readthedocs.io/en/latest/backends/custom.html#example-backend-with-rate-limiter.
from sttp.
Related Issues (20)
- Add an option of automatic pings and pongs to web sockets in HtttpClient backends
- Add support for play-json 3 HOT 1
- Update to Prometheus 1.x.x HOT 3
- [BUG] HEAD request times out using Http4s backend HOT 2
- Http proxy problem with async-http-client-backend-zio:3.9.1
- Uri interpolation incorrectly percent-encodes some characters HOT 2
- where is basicRequest? HOT 1
- AbstractFetchBackend does not support manual cancellation/interruption
- Expose AsyncHttpClient when creating AsyncHttpClientBackend HOT 2
- Preserve request-metadata in SttpBackendStub HOT 2
- is `null` valid header field value? HOT 5
- Integrate oauth? HOT 16
- add support Tethys json HOT 2
- Add Scala 3 support for play-json HOT 4
- quickRequest: Unexpected behaviour dependent on method order HOT 4
- Refactor metrics names according to standards
- Metrics caching rework
- No json4s release for scala 3 HOT 4
- Add Ox integration: SSE & WebSockets? HOT 2
- Spray json support for scala 3 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sttp.