6 releases (breaking)

new 0.5.0 May 7, 2025
0.4.0 Dec 17, 2024
0.3.0 Jul 21, 2024
0.2.1 Feb 18, 2024
0.1.0 Feb 12, 2024

#1396 in Game dev

Download history 1/week @ 2025-01-31 5/week @ 2025-02-14 1/week @ 2025-02-21 6/week @ 2025-02-28 3/week @ 2025-04-11 1/week @ 2025-04-18 99/week @ 2025-05-02

103 downloads per month

MIT/Apache

45KB
309 lines

bevy_ehttp

Crates.io Documentation MIT/Apache 2.0

A ehttp Bevy Plugin that works both on native and on WASM.

Simple request will invoke OnResponseString(pub Result<Response, String>) event once completed.

There is also option to call typed request that will allow to deserialize response to given type by using RequestBundle<T>. More details available in typed.rs example.

Example

use bevy::{prelude::*, time::common_conditions::on_timer};
use bevy_ehttp::prelude::*;

fn main() {
    App::new()
        .add_plugins((MinimalPlugins, HttpPlugin))
        .add_systems(
            Update,
            send_request.run_if(on_timer(std::time::Duration::from_secs(1))),
        )
        .add_observer(on_response)
        .run();
}

fn send_request(mut commands: Commands) {
    let req = ehttp::Request::get("https://api.ipify.org/eee?format=json");
    commands.spawn(HttpRequest(req));
}

fn on_response(t: Trigger<OnResponseString>) {
    match &**t {
        Ok(response) => println!("[{:?}]: {:?}", t.url(), response.text()),
        Err(e) => println!("response error: {:?}", e),
    }
}

Thanks

Big thanks to the creators of the Bevy Engine and to the foxzool user for creating bevy_http_client that this plugin is based on.

License

bevy_ehttp is dual-licensed under MIT and Apache 2.0 at your option.

Bevy compatibility table

Bevy version Crate version
0.16 0.5
0.15 0.4
0.14 0.3
0.13 0.2
0.12 0.1

Dependencies

~43–76MB
~1.5M SLoC