WordPress API mit Rust

Das Programm stellt eine Verbindung zur WordPress REST-API her, die Informationen über Beiträge auf der Website bereitstellt. Es verwendet die Rust-Bibliotheken reqwest und tokio, um eine HTTP-Anfrage an eine WordPress-Website zu senden.

Das Programm erstellt einen HTTP-Client und konfiguriert eine Anfrage an die WordPress-Website, indem es die URL und einen benutzerdefinierten Benutzer-Agenten festlegt. Anschließend sendet es diese Anfrage an die Website.

Nach dem Senden der Anfrage wartet das Programm auf die Antwort des Servers. Wenn die Antwort erfolgreich ist (z.B. ein Statuscode 200), wird der Inhalt der Antwort (die Beitragsdaten) gelesen und auf der Konsole angezeigt. Andernfalls wird eine Fehlermeldung angezeigt.

In einfachen Worten: Das Programm fragt eine WordPress-Website nach ihren Beiträgen, empfängt die Antwort und zeigt die Beitragsinformationen an. Dies geschieht mithilfe von reqwest und tokio, um Webanfragen asynchron zu verarbeiten.

reqwest

reqwest ist eine Rust-Bibliothek, die es ermöglicht, HTTP-Anfragen an Webserver zu senden und die Antworten von diesen Servern zu empfangen.

tokio

tokio ist eine Rust-Bibliothek, die die Entwicklung von asynchronen und nebenläufigen Programmen erleichtert, indem sie die Arbeit mit asynchronen Aufgaben und I/O-Operationen ermöglicht.

Asynchron

Asynchrones Verarbeiten in der Programmierung bedeutet, dass Aufgaben oder Operationen parallel oder nebeneinander ausgeführt werden können, ohne auf das Ergebnis einer Aufgabe warten zu müssen, bevor eine andere gestartet wird. Dies ermöglicht eine effiziente Nutzung der Systemressourcen und kann die Leistung und Reaktionsfähigkeit von Programmen verbessern.

Im Kontext von Rust, reqwest und tokio bedeutet dies, dass das Programm mehrere Aufgaben gleichzeitig ausführen kann, z.B. das Senden von HTTP-Anfragen an verschiedene Ressourcen, ohne auf die Antwort jeder Anfrage zu warten, bevor die nächste gestartet wird. Dies erlaubt es dem Programm, während der Wartezeit auf eine Antwort von einer Anfrage andere nützliche Aufgaben auszuführen, was die Gesamtleistung verbessert und die Ausführungszeit verkürzt.

Cargo.toml

[package]
name = "wordpress-api"
version = "0.1.0"
edition = "2021"

[dependencies]
reqwest = "0.11"
tokio = { version = "1", features = ["full"] }

main.rs

// main.rs
mod browser;     // Importiere die Datei browser.rs

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Der URL Ihrer WordPress-Website mit dem Pfad zur REST-API
    // Der neueste Beitrag vom Blog
    let url = "https://allerstorfer.at/wp-json/wp/v2/posts?per_page=1&page=1&_fields=excerpt,title,link";

    // Aufruf der Funktion aus browser.rs und Übergabe des URL-Parameters
    browser::browse(url).await?;
    
    Ok(())
}

browser.rs

// browser.rs

use reqwest::header::USER_AGENT;

pub async fn browse(url: &str) -> Result<(), Box<dyn std::error::Error>> {
    // Erstellen Sie einen HTTP-Client
    let client = reqwest::Client::new();

    // Erstellen Sie eine Anfrage und konfigurieren Sie sie
    let request = client
        .get(url)
        .header(USER_AGENT, "My Rust App");

    // Senden Sie die HTTP-Anfrage und warten Sie auf die Antwort
    let response = request.send().await?;

    // Überprüfen Sie den Statuscode der Antwort
    if response.status().is_success() {
        // Lesen Sie den Inhalt der Antwort
        let body = response.text().await?;
        println!("{}", body);
    } else {
        println!("Fehler: {}", response.status());
    }

    Ok(())
}

Programm ausführen

HTTP-Antwort als JSON

cargo run

HTTP-Antwort als JSON im menschenlesbaren Format

cargo run | jq

Siehe auch

developer.wordpress.org WordPress REST API Handbook
github.com WordPress.com API Console v3
docs.rs/reqwest Crate reqwest
docs.rs/tokio Crate tokio