Aufrufen der REST-API aus einer JavaScript-Datei mit Vue
<p>Ich habe einen Axios-API-Aufruf, der auf einer Vue-Seite perfekt funktioniert. Ich muss dies in ein eigenständiges aufrufbares Modul umwandeln, das in der Anwendung mehrfach wiederverwendet werden kann. Jeder Versuch schlägt fehl. Ich bin mir nicht sicher, ob es an mangelnder Erfahrung mit Standalone-JS oder etwas anderem liegt. </p>
<p>Dies ist funktionierender Vue-Code. </p>
<pre class="lang-html Prettyprint-override"><code><template>
<div>
<ul v-if="posts && posts.length">
<li v-for="Beiträge der Beiträge">
<p><strong>{{post.resID}}</strong></p>
<p>{{post.Name}}</p>
</li>
</ul>
<ul v-if="errors &&errors.length">
<li v-for="Fehler der Fehler">
{{Fehlermeldung}}
</li>
</ul>
</div>
</template>
<script>
Axios aus 'Axios' importieren;
Standard exportieren {
Name: "GetMxList",
Daten() {
zurückkehren {
Beiträge: [],
Fehler: []
}
},
// Den Beitrag abrufen, wenn die Komponente erstellt wird.
erstellt() {
axios.get("http://localhost:8080/rest/...")
.then(response => {
// JSON-Antworten werden automatisch analysiert.
this.posts = Antwort.Daten
})
.catch(e => {
this.errors.push(e)
})
}
}
</script>
</code></pre>
<p>Vue 3. Vielen Dank für Ihre Antwort. Tut mir leid, dass ich mich nicht klar ausgedrückt habe. Mein Ziel ist es, ein Modul (ähnlich rest.js) zu erstellen und es dann in Pinia zu verwenden. Das Ziel besteht darin, einmal zu laden und die Ergebnisse dann häufig zu verwenden. Derzeit funktioniert es mit „statischem“ Laden wie im folgenden Code, wobei der getJSONList-Aufruf eine JSON-formatierte Antwort zurückgibt und diese Antwort zur Verwendung in der gesamten Anwendung in eine MyList einfügt. Daher verwenden Komponenten einfach die Pinia-Zuordnung. </p>
<pre class="brush:php;toolbar:false;">aktionen: {
asynchrone fetchList() {
const data = Warten auf getJSONList();
this.Mylist = Daten;
},</pre>
<p>Viele Iterationen. Dies gibt zwar nichts zurück, wirft aber zumindest keine Fehler aus ...</p>
<pre class="brush:php;toolbar:false;">axios aus 'axios' importieren;
Exportfunktion getJSONList() {
const rest = axios.create({
baseURL: "http://localhost:8080/rest/", // Ein besserer Ansatz ist die Verwendung von Umgebungsvariablen
});
const getPosts = async () =>
versuchen {
return (await rest.get("http://localhost:8080/rest/")).data;
} Catch (Err) {
console.error(err.toJSON());
throw new Error(err.message);
}
};
return (getPosts);
}</pre></p>