90 lines
2.5 KiB
Markdown
90 lines
2.5 KiB
Markdown
# ureq
|
|
|
|

|
|
|
|
> Minimal request library in rust.
|
|
|
|
## Usage
|
|
|
|
```rust
|
|
// requires feature: `ureq = { version = "*", features = ["json"] }`
|
|
#[macro_use]
|
|
extern crate ureq;
|
|
|
|
fn main() {
|
|
|
|
// sync post request of some json.
|
|
let resp = ureq::post("https://myapi.acme.com/ingest")
|
|
.set("X-My-Header", "Secret")
|
|
.send_json(json!({
|
|
"name": "martin",
|
|
"rust": true
|
|
}));
|
|
|
|
// .ok() tells if response is 200-299.
|
|
if resp.ok() {
|
|
// ...
|
|
}
|
|
}
|
|
```
|
|
|
|
## Features
|
|
|
|
To enable a minimal dependency tree, some features are off by default.
|
|
You can control them when including `ureq` as a dependency.
|
|
|
|
```
|
|
ureq = { version = "*", features = ["json", "charset"] }
|
|
```
|
|
|
|
* `tls` enables https. This is enabled by default.
|
|
* `json` enables `response.into_json()` and `request.send_json()` serde json.
|
|
* `charset` enables interpreting the charset part of
|
|
`Content-Type: text/plain; charset=iso-8859-1`. Without this, the library
|
|
defaults to rust's built in `utf-8`.
|
|
|
|
## Motivation
|
|
|
|
* Minimal dependency tree
|
|
* Obvious API
|
|
|
|
This library tries to provide a convenient request library with a minimal dependency
|
|
tree and an obvious API. It is inspired by libraries like
|
|
[superagent](http://visionmedia.github.io/superagent/) and
|
|
[fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API).
|
|
|
|
### Sync (for now)
|
|
|
|
This library uses blocking socket reads and writes, for now.
|
|
The async story in rust is in heavy development and when used
|
|
currently pulls in a heavy dependency tree (tokio etc). Once
|
|
more async support is in rust core and won't drag those
|
|
dependencies, this library might change.
|
|
|
|
|
|
## TODO
|
|
|
|
- [ ] Forms with application/x-www-form-urlencoded
|
|
- [ ] multipart/form-data
|
|
- [ ] Expect 100-continue
|
|
- [x] Use `rustls` when [ring with versioned asm symbols](https://github.com/briansmith/ring/pull/619) is released. (PR is not resolved, but most implementations have settled on 0.13)
|
|
|
|
## License
|
|
|
|
Copyright (c) 2019 Martin Algesten
|
|
|
|
Licensed under either of
|
|
|
|
* Apache License, Version 2.0
|
|
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
|
|
* MIT license
|
|
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
|
|
|
|
at your option.
|
|
|
|
## Contribution
|
|
|
|
Unless you explicitly state otherwise, any contribution intentionally submitted
|
|
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
|
|
dual licensed as above, without any additional terms or conditions.
|