Skip to main content

ReadinessResponse

Struct ReadinessResponse 

Source
pub struct ReadinessResponse {
    pub status: HealthStatus,
    pub version: String,
    pub service_id: String,
    pub checks: HashMap<String, Vec<HealthCheck>>,
}
Expand description

Readiness/startup probe response (GET /health/ready, GET /health/startup) — RFC 8458.

Answers the question: “is this service ready to handle traffic?” Includes dependency checks (database, cache, upstream services).

HTTP status: 200 OK on pass/warn, 503 Service Unavailable on fail.

Requires the std feature (uses HashMap for dependency checks).

Fields§

§status: HealthStatus

Overall health status, derived from the worst check result.

§version: String

Semantic version of the service, e.g. "1.0.0".

§service_id: String

Unique identifier for this service instance, e.g. "my-service".

§checks: HashMap<String, Vec<HealthCheck>>

Component check results. Key format: "<component>:<measurement>". Example: "postgres:connection", "redis:latency".

Implementations§

Source§

impl ReadinessResponse

Source

pub fn new( version: impl Into<String>, service_id: impl Into<String>, checks: HashMap<String, Vec<HealthCheck>>, ) -> Self

Create a new readiness response, computing overall status from checks.

Status is the worst of all check statuses: fail > warn > pass.

§Examples
use std::collections::HashMap;
use api_bones::health::{ReadinessResponse, HealthCheck, HealthStatus};

let mut checks = HashMap::new();
checks.insert(
    "postgres:connection".to_string(),
    vec![HealthCheck::pass("datastore")],
);
checks.insert(
    "redis:ping".to_string(),
    vec![HealthCheck::fail("datastore", "timeout")],
);
let resp = ReadinessResponse::new("1.0.0", "my-service", checks);
assert_eq!(resp.status, HealthStatus::Fail);
assert_eq!(resp.http_status(), 503);
Source

pub fn http_status(&self) -> u16

HTTP status code for this response.

Source

pub fn builder() -> ReadinessResponseBuilder<(), ()>

Return a typed builder for constructing a ReadinessResponse.

Required fields (version and service_id) must be set before calling ReadinessResponseBuilder::build; the compiler enforces this via typestate. Use ReadinessResponseBuilder::add_check to accumulate component checks.

§Example
use api_bones::health::{HealthCheck, ReadinessResponse};

let resp = ReadinessResponse::builder()
    .version("1.0.0")
    .service_id("my-service")
    .add_check("postgres:connection", HealthCheck::pass("datastore"))
    .build();
assert!(resp.checks.contains_key("postgres:connection"));

Trait Implementations§

Source§

impl Clone for ReadinessResponse

Source§

fn clone(&self) -> ReadinessResponse

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ReadinessResponse

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for ReadinessResponse

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for ReadinessResponse

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,