Rest: Unterschied zwischen den Versionen

Aus Dokument
Zur Navigation springen Zur Suche springen
// via Wikitext Extension for VSCode
 
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 14: Zeile 14:
== html ausgabe ohne Bearbeitung Funktionen==
== html ausgabe ohne Bearbeitung Funktionen==
* https://wiki.ahrensburg.city/api.php?action=parse&format=json&page=Geografie&disableeditsection=1&disabletoc=1
* https://wiki.ahrensburg.city/api.php?action=parse&format=json&page=Geografie&disableeditsection=1&disabletoc=1
== Beispiel mit Golang ==
<pre>
package main
import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
    "strings"
    "github.com/PuerkitoBio/goquery"
)
func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // URL der API-Abfrage
        url := "https://wiki.ahrensburg.city/api.php?action=parse&format=json&page=Forst_Hagen&disableeditsection=1&disabletoc=1"
        // API-Abfrage durchführen
        resp, err := http.Get(url)
        if err != nil {
            http.Error(w, "Fehler bei der API-Abfrage: "+err.Error(), http.StatusInternalServerError)
            return
        }
        defer resp.Body.Close()
        body, err := ioutil.ReadAll(resp.Body)
        if err != nil {
            http.Error(w, "Fehler beim Lesen der Antwort: "+err.Error(), http.StatusInternalServerError)
            return
        }
        // JSON-Antwort parsen
        var data map[string]interface{}
        err = json.Unmarshal(body, &data)
        if err != nil {
            http.Error(w, "Fehler beim Parsen der JSON-Antwort: "+err.Error(), http.StatusInternalServerError)
            return
        }
        // HTML-Inhalt erstellen
        htmlContent := "<html><head><title>Geografie</title></head><body>"
        if parse, ok := data["parse"].(map[string]interface{}); ok {
            title := parse["title"].(string)
            text := parse["text"].(map[string]interface{})["*"].(string)
            // HTML-Inhalt mit goquery parsen
            doc, err := goquery.NewDocumentFromReader(strings.NewReader(text))
            if err != nil {
                http.Error(w, "Fehler beim Parsen des HTML-Inhalts: "+err.Error(), http.StatusInternalServerError)
                return
            }
            // Entfernen des gesamten <div id="map_leaflet_1">-Inhalts
            doc.Find("div#map_leaflet_1").Remove()
            // Bereinigten HTML-Inhalt extrahieren
            cleanedHTML, err := doc.Html()
            if err != nil {
                http.Error(w, "Fehler beim Extrahieren des bereinigten HTML-Inhalts: "+err.Error(), http.StatusInternalServerError)
                return
            }
            htmlContent += fmt.Sprintf("<h1>%s</h1>%s", title, cleanedHTML)
        } else {
            htmlContent += "<p>Kein Inhalt gefunden.</p>"
        }
        htmlContent += "</body></html>"
        // HTML-Inhalt ausgeben
        w.Header().Set("Content-Type", "text/html; charset=utf-8")
        w.Write([]byte(htmlContent))
    })
    // HTTP-Server auf Port 8080 starten
    fmt.Println("Server läuft auf http://localhost:8080")
    http.ListenAndServe(":8080", nil)
}
</pre>


Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

Aktuelle Version vom 12. August 2024, 20:57 Uhr

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

Wiki Artikeln in Rest Api ausgeben

Einleitung

In diesem Artikel wird beschrieben, wie


Wiki Inhalte in Rest Api ausgeben

Einleitung

In diesem Artikel wird beschrieben, wie

html ausgabe ohne Bearbeitung Funktionen

Beispiel mit Golang

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
    "strings"

    "github.com/PuerkitoBio/goquery"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // URL der API-Abfrage
        url := "https://wiki.ahrensburg.city/api.php?action=parse&format=json&page=Forst_Hagen&disableeditsection=1&disabletoc=1"

        // API-Abfrage durchführen
        resp, err := http.Get(url)
        if err != nil {
            http.Error(w, "Fehler bei der API-Abfrage: "+err.Error(), http.StatusInternalServerError)
            return
        }
        defer resp.Body.Close()

        body, err := ioutil.ReadAll(resp.Body)
        if err != nil {
            http.Error(w, "Fehler beim Lesen der Antwort: "+err.Error(), http.StatusInternalServerError)
            return
        }

        // JSON-Antwort parsen
        var data map[string]interface{}
        err = json.Unmarshal(body, &data)
        if err != nil {
            http.Error(w, "Fehler beim Parsen der JSON-Antwort: "+err.Error(), http.StatusInternalServerError)
            return
        }

        // HTML-Inhalt erstellen
        htmlContent := "<html><head><title>Geografie</title></head><body>"

        if parse, ok := data["parse"].(map[string]interface{}); ok {
            title := parse["title"].(string)
            text := parse["text"].(map[string]interface{})["*"].(string)

            // HTML-Inhalt mit goquery parsen
            doc, err := goquery.NewDocumentFromReader(strings.NewReader(text))
            if err != nil {
                http.Error(w, "Fehler beim Parsen des HTML-Inhalts: "+err.Error(), http.StatusInternalServerError)
                return
            }

            // Entfernen des gesamten <div id="map_leaflet_1">-Inhalts
            doc.Find("div#map_leaflet_1").Remove()

            // Bereinigten HTML-Inhalt extrahieren
            cleanedHTML, err := doc.Html()
            if err != nil {
                http.Error(w, "Fehler beim Extrahieren des bereinigten HTML-Inhalts: "+err.Error(), http.StatusInternalServerError)
                return
            }

            htmlContent += fmt.Sprintf("<h1>%s</h1>%s", title, cleanedHTML)
        } else {
            htmlContent += "<p>Kein Inhalt gefunden.</p>"
        }

        htmlContent += "</body></html>"

        // HTML-Inhalt ausgeben
        w.Header().Set("Content-Type", "text/html; charset=utf-8")
        w.Write([]byte(htmlContent))
    })

    // HTTP-Server auf Port 8080 starten
    fmt.Println("Server läuft auf http://localhost:8080")
    http.ListenAndServe(":8080", nil)
}

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).