Zum Hauptinhalt springen

send()

Beschreibung

Sendet eine HTTP-Anfrage an den Server und gibt je nach Anfrage ein Promise mit oder ohne Daten zurück

Alle Anfragen an den Server werden mit der send()-Methode durchgeführt, die Teil des RestDataProvider-Services ist.

Verwendung

send(
url: string,
method: "GET" | "POST" | "PUT" | "DELETE" | string,
data?: object,
headers?: object,
): Promise<obj[]>

Parameter

NameTypBeschreibung
urlstringErforderlich. Der Pfad zum Server, an den die Anfrage gesendet wird.
methodstringErforderlich. Der HTTP-Methodentyp (Get, Post, Put, Delete)
dataobjectOptional. Parameter, die an den Server gesendet werden. Standardmäßig werden die Parameter des ausgelösten Events gesendet. Sie können jedoch zusätzliche Parameter über ein benutzerdefiniertes Objekt hinzufügen. Siehe das Beispiel unten.
headersobjectOptional. Der Standard-Header ist der Content-Type-Header mit dem Wert application/json. Weitere optionale Header können mit dem Parameter customHeaders hinzugefügt werden. Siehe das Beispiel unten.

Antwort

Die Methode gibt das Promise-Objekt mit oder ohne Daten zurück, abhängig von der Anfrage.

Ein Promise wird bei erfolgreichem Anfragestatus zurückgegeben. Bei einer fehlgeschlagenen Anfrage (response.status == 500) wird eine Ausnahme mit einem Fehlertext ausgelöst.

Sie können konfigurieren, was zurückgegeben werden soll. Um auf eine fehlgeschlagene Anfrage zu reagieren, verwenden Sie die catch-Methode des zurückgegebenen Promise.


restDataProvider.send(url, method, data)
.then(data => {
... // Erfolg: etwas mit den Daten tun
})
.catch(err => {
... // Fehler-Handler
});

Beispiele

Das folgende Beispiel zeigt, wie eine Anfrage mit zusätzlichen Parametern neben den Standardparametern gesendet wird:

const { ToDo, Toolbar, RestDataProvider } = todo;

const activeProject = null;
const url = "http://localhost:3000";
const restProvider = new RestDataProvider(url);

Promise.all([
restProvider.getProjectTasks(activeProject),
restProvider.getProjects(),
]).then(([tasks, projects]) => {
const list = new ToDo("#root", {
tasks,
projects,
activeProject,
});
const toolbar = new Toolbar("#toolbar", {
api: list.api,
});

list.api.on("set-project", obj => {
obj.custom = "custom event";
restDataProvider.send(`tasks/projects/0`, "GET", obj).then(data => {
list.api.parse({ tasks: data });
return Promise.resolve();
});
});

list.api.setNext(restProvider);
restProvider.setAPI(list.api);
});

Die folgenden Beispiele zeigen, wie der send-Methode weitere Header hinzugefügt werden können.

const customHeaders = {
"Authorization": "Bearer",
"Custom header": "some value",
};

list.api.on("add-task", obj => {
restDataProvider.send("tasks", "POST", obj, customHeaders);
});

Alternativ können Sie Header hinzufügen, indem Sie den RestDataProvider wie unten beschrieben überschreiben. Diese Vorgehensweise gibt Ihnen mehr Kontrolle über die an den Server gesendeten Daten:

const { ToDo, Toolbar, RestDataProvider } = todo;
...
// ToDo-Initialisierung
...

class MyDataProvider extends RestDataProvider {
send(url, method, data, headers) {
headers = { ...headers, "SomeToken": "abc" };
return super.send(url, method, data, headers);
}
}

const myProvider = new MyDataProvider(url);
list.api.setNext(myProvider);
myProvider.setAPI(list.api);

Verwandte Artikel: Mit dem Server arbeiten