Stellen Sie Ihre Frage und erhalten Sie einen Resümee des Dokuments, indem Sie diese Seite und den AI-Anbieter Ihrer Wahl referenzieren
Der Inhalt dieser Seite wurde mit einer KI übersetzt.
Den englischen Originaltext ansehenWenn Sie eine Idee haben, um diese Dokumentation zu verbessern, zögern Sie bitte nicht, durch das Einreichen eines Pull-Requests auf GitHub beizutragen.
GitHub-Link zur DokumentationMarkdown des Dokuments in die Zwischenablage kopieren
.astro-Dateien können Daten aus der Ferne abrufen, um dir bei der Erstellung deiner Seiten zu helfen.
fetch() in Astro
Alle Astro-Komponenten haben Zugriff auf die globale Funktion fetch() in ihrem Komponentenskript, um HTTP-Anfragen an APIs unter Verwendung der vollständigen URL (z. B. https://example.com/api) zu stellen. Außerdem kannst du mit new URL("/api", Astro.url) eine URL zu den Seiten und Endpunkten deines Projekts konstruieren, die bei Bedarf auf dem Server gerendert werden.
Dieser Fetch-Aufruf wird zur Erstellungszeit ausgeführt, und die Daten stehen der Komponentenvorlage für die Erzeugung von dynamischem HTML zur Verfügung. Wenn der Modus SSR aktiviert ist, werden alle Fetch-Aufrufe zur Laufzeit ausgeführt.
💡 Nutze die Vorteile von Top-Level Await in deinem Astro-Komponentenskript.
💡 Übergib die abgerufenen Daten als Eigenschaften an Astro- als auch an Framework-Komponenten.
Kopieren Sie den Code in die Zwischenablage
---// src/components/User.astroimport Contact from '../components/Contact.jsx';import Location from '../components/Location.astro';const response = await fetch('https://randomuser.me/api/');const data = await response.json();const randomUser = data.results[0];---<!-- Daten, die zur Erstellungszeit abgerufen werden, können in HTML gerendert werden --><h1>User</h1><h2>{randomUser.name.first} {randomUser.name.last}</h2><!-- Daten, die zur Erstellungszeit abgerufen werden, können als Eigenschaften an die Komponente übergeben werden --><Contact client:load email={randomUser.email} /><Location city={randomUser.location.city} />
:::note Beachte, dass alle Daten in Astro-Komponenten zum Render-Zeitpunkt der Komponente abgerufen werden.
Deine veröffentlichte Astro-Website ruft Daten einmalig während des Erstellungsvorgangs ab. Während der Entwicklung wirst du aber bei jeder Komponentenaktualisierung einen Datenabruf sehen. Wenn du einen mehrfachen clientseitigen Datenabruf benötigst, nutze eine Framework-Komponente oder ein clientseitiges Skript in einer Astro-Komponente. :::
fetch() in Framework-Komponenten
Die fetch()-Funktion ist auch global in jeder Framework-Komponente verfügbar:
Kopieren Sie den Code in die Zwischenablage
import type { FunctionalComponent } from 'preact';const data = await fetch('https://example.com/movies.json').then((response) => response.json());// Komponenten, die zum Zeitpunkt der Erstellung gerendert werden, loggen Daten auch in der CLI.// Wenn sie mit einer client:*-Direktive gerendert werden, wird dies auch in der Browser-Konsole angezeigt.console.log(data);const Movies: FunctionalComponent = () => {// Ausgabe des Ergebnisses in die Seite return <div>{JSON.stringify(data)}</div>;};export default Movies;
GraphQL-Abfragen
Astro kann auch fetch() nutzen, um GraphQL-Server mit einer beliebigen gültigen GraphQL-Anfrage anzufragen.
Kopieren Sie den Code in die Zwischenablage
---const response = await fetch("https://swapi-graphql.netlify.app/.netlify/functions/index", { method: 'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({ query: ` query getFilm ($id:ID!) { film(id: $id) { title releaseDate } } `, variables: { id: "ZmlsbXM6MQ==", }, }), });const json = await response.json();const { film } = json.data;---<h1>Informationen über Star Wars: Eine neue Hoffnung abrufen</h1><h2>Titel: {film.title}</h2><p>Jahr: {film.releaseDate}</p>
Abfragen von einem Headless-CMS
Astro-Komponenten können Daten aus deinem bevorzugten CMS abrufen und sie dann als Seiteninhalt wiedergeben. Mit dynamischen Routen können die Komponenten sogar Seiten auf der Grundlage deiner CMS-Inhalte erstellen.
In unseren CMS Guides findest du alle Details zur Integration von Astro in Headless CMS wie Storyblok, Contentful und WordPress.