schema-registry-api

Crates.ioschema-registry-api
lib.rsschema-registry-api
version2.0.1
sourcesrc
created_at2023-04-15 10:58:36.661994
updated_at2023-08-12 08:35:01.262906
descriptionREST API for a schema-registry
homepagehttps://github.com/ilaborie/schema-registry-cli/schema-registry-api
repositoryhttps://github.com/ilaborie/schema-registry-api.git
max_upload_size
id839873
size132,447
igor (ilaborie)

documentation

https://docs.rs/schema-registry-api

README

Schema registry API

Crates.io Documentation Codecov Dependency status

Provide a REST API to call with a schema registry.

Examples

List subjects

use reqwest::Url;
use schema_registry_api::SchemaRegistry;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Create a `SchemaRegistry`
    let base_url = Url::parse("http://localhost:8081")?;
    let sr = SchemaRegistry::build_default(base_url)?;

    // List subjects
    let subjects = sr.subject().list(None, None).await?;

    if subjects.is_empty() {
        println!("No subject found");
    }
    for subject in &subjects {
        println!("Found subject '{subject}'");
    }
    Ok(())
}

Register a schema

use reqwest::Url;
use schema_registry_api::{RegisterSchema, SchemaRegistry};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Create a `SchemaRegistry`
    let base_url = Url::parse("http://localhost:8081")?;
    let sr = SchemaRegistry::build_default(base_url)?;

    // Create a subject
    let subject = "a-topic-value".parse()?;
    // Create the `RegisterSchema`
    let schema = RegisterSchema {
        schema: include_str!("../tests/assets/a_record.avsc").to_string(),
        ..Default::default()
    };

    // Register the schema for the subject
    let registered_schema = sr.subject().new_version(&subject, &schema, None).await?;
    // Get the schema id
    let schema_id = registered_schema.id;

    println!("The schema #{schema_id} is registered for subject '{subject}'");
    Ok(())
}

License

Licensed under either of

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.

Commit count: 0

cargo fmt