Rest: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
// via Wikitext Extension for VSCode |
|||
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 16: | Zeile 16: | ||
== Beispiel mit Golang == | == Beispiel mit Golang == | ||
<pre> | |||
package main | package main | ||
| Zeile 24: | Zeile 24: | ||
"io/ioutil" | "io/ioutil" | ||
"net/http" | "net/http" | ||
"strings" | |||
"github.com/PuerkitoBio/goquery" | |||
) | ) | ||
| Zeile 29: | Zeile 32: | ||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { | http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { | ||
// URL der API-Abfrage | // URL der API-Abfrage | ||
url := "https://wiki.ahrensburg.city/api.php?action=parse&format=json&page= | url := "https://wiki.ahrensburg.city/api.php?action=parse&format=json&page=Forst_Hagen&disableeditsection=1&disabletoc=1" | ||
// API-Abfrage durchführen | // API-Abfrage durchführen | ||
| Zeile 59: | Zeile 62: | ||
title := parse["title"].(string) | title := parse["title"].(string) | ||
text := parse["text"].(map[string]interface{})["*"].(string) | text := parse["text"].(map[string]interface{})["*"].(string) | ||
htmlContent += fmt.Sprintf("<h1>%s</h1>%s", title, | |||
// 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 { | } else { | ||
htmlContent += "<p>Kein Inhalt gefunden.</p>" | htmlContent += "<p>Kein Inhalt gefunden.</p>" | ||
| Zeile 76: | Zeile 97: | ||
} | } | ||
</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).