Lassen Sie mich zunächst eine kurze
10-minütige Einführung in das Wesentliche der Vernetzung geben.
Je mehr ich Englisch unterrichte, desto mehr erkenne ich, dass nur um ihre schönsten Merkmale
der Winkel zu verwenden, müssen Sie ein Verständnis von so vielen verschiedenen verbundenen FINs haben,
bevor Sie sogar verstehen können, was Sie mit eckigen tun.
In dem Moment, in dem Sie beginnen, jede dieser FINs zu jagen,
werden sie ganze Kurse auf eigene Faust werden und bald
werde ich am Ende ihren gesamten Informatik-Lehrplan zu Ihnen unterrichten.
Aber angesichts der Tatsache, dass wir begrenzte Zeit haben,
werde ich mich darauf konzentrieren, Ihnen das Wesentliche zu liefern
, das Sie benötigen, um jedes der Themen zu verstehen.
Was wir nun in diesem speziellen Modul abdecken, erfordert
zumindest ein rudimentäres Verständnis dafür, wie Computer-Networking funktioniert,
bevor wir verstehen, warum wir HTTP verwenden müssen,
warum wir mit einem Server kommunizieren.
Was ist der Grund für die Verzögerung ist, dass, wenn Sie mit einem Server sprechen,
und so weiter.
Und auch die verschiedenen Protokolle, die Sie beachten müssen,
bevor Sie sogar mit einem Server kommunizieren können. Wenn
man all dies im Hinterkopf hält,
ist eine 10-minütige Einführung in das Wesentliche der Vernetzung.
Wir beginnen zu erkennen, dass Webanwendungen nicht mehr eigenständig sind.
Sie haben immer ein Angebot unquote Cloud Back-End unterstützt Ihre Web-Anwendung.
Heutzutage ist alles in der Cloud.
Bald wirst du auch auf der Cloud sein, zumindest auf Wolke neun mit silbernem Futter.
Aber da wir eine Silverside-Unterstützung benötigen, damit unsere eckige Anwendung korrekt funktioniert,
würden Sie den Server hosten.
Und heutzutage ist das Hosten des Servers sehr einfach, indem man einen
der Cloud-basierten Infrastrukturdienste verwendet.
Dinge wie Amazon, Web Services oder Heroku oder Digital Ocean
oder viele andere, die Cloud-basierte Serverunterstützung bieten
, die Sie für die Bereitstellung von Server-Support für Ihre Winkelanwendung nutzen können.
Also, auf der Serverseite, was genau ist auf der Serverseite verfügbar?
Sie haben in der Regel ein Server-Front-End, das mit Ihrer Winkelanwendung spricht.
Also, das ist die Serverlogik und hinter den Kulissen
kommuniziert die Serverlogik mit einem persistenten Speicher wie einer Datenbank,
in der Ihre Daten gespeichert und abgerufen werden.
Wenn Sie die Netzwerkwelt betreten, werden Sie ziemlich bald
mit 304 kleinen Akronymen bombardiert.
Dinge, von denen Sie dachten, dass Sie wussten, was sie aus normalem Englisch stammen,
oder sie haben eine ganz andere Bedeutung
oder Zweck, wenn Sie ihnen in der Netzwerkwelt begegnen.
Also, lassen Sie uns ein paar von ihnen untersuchen.
Also, in der Netzwerkwelt werden Sie hören, wie Menschen über HTTP-Protokoll sprechen.
Das Protokoll, das für die Kommunikation zwischen dem Client und dem Server verwendet wird.
Dies ist ein Anwendungs-Layer-Protokoll
, über das wir im Rest dieser Vorlesung kurz noch ein wenig mehr sprechen werden.
Das HTTP-Protokoll, damit es funktioniert, benötigt eine URL, den
Uniform Resource Locator, zur Verfügung gestellt werden.
Dies ist also eine Zeichenfolge, die durch Schrägstriche mit in jedem TTP-Doppelpunkt getrennt ist,
auf einem davor angehängten https:.
Und ich bin sicher, wenn Sie das World Wide Web verwendet werden,
sind Sie ziemlich vertraut mit dem, wie die URLs aussehen.
Jetzt werden Sie darüber hinaus hören, wie Leute über JSON sprechen,
nicht zu Ihrem Freund Jason, sondern JavaScript Object Notation.
Die JavaScript-Objekt-Notation ist also eine Möglichkeit, Daten zu codieren,
die von der Serverseite zur Clientseite oder umgekehrt geliefert werden.
Außerdem hören Sie Leute, die über XML sprechen,
eine weitere Möglichkeit, Daten zu codieren, während sie sich im Transitversand
zwischen dem Client und dem Serverstandort befinden.
Nun, und auch Sie werden hören, wie Leute über höherwertige Protokolle namens SOAP sprechen,
nicht die Art, mit der Sie eine Dusche nehmen, sondern SOAP als ein Protokoll,
das die Kommunikation zwischen Verteilungseinheiten innerhalb des Netzwerks ermöglicht.
Und auch, Sie werden hören, wie Leute über REST sprechen, nicht etwas,
das Sie zu viel durch diesen speziellen Kurs bekommen.
REST oder eine repräsentative Zustandstransfer.
Ich werde einen kürzeren Vortrag, der speziell
REST gewidmet ist, ein wenig später in diesem Modul haben.
Und in der HTTP-Welt werden Sie hören, wie Leute über GET,
PUT, POST und DELETE sprechen, und Sie würden sich fragen,
was sie alle bedeuten?
Lassen Sie uns ein wenig darüber in dieser Vorlesung lernen,
und auch die Vorlesung über REST, die Sie ein wenig später sehen werden.
Eine wichtige Sache, die Sie verstehen müssen, wenn Sie
mit einem Server kommunizieren, ist, dass die Client-Server-Kommunikation unerwartete
Verzögerungen oder unbestimmte Verzögerungen verursacht,
während die Daten entweder abgerufen oder von der Clientseite auf den Server hochgeladen werden.
Also, was bedeutet, dass
Sie innerhalb Ihrer Client-Server-Anwendung den Benutzer darüber informieren müssen,
dass etwas hinter den Kulissen passiert und in der Lage sein, die Verzögerungen zu behandeln
und möglicherweise nicht in der Lage zu sein, die Daten von der Serverseite zu erhalten.
Es ist durchaus möglich, dass, wenn Sie versucht haben, eine Verbindung mit einem Server herzustellen,
die Verbindung zum Server fehlschlägt,
der Server möglicherweise falsche Daten zurückgibt oder einen Kommunikationsfehler verursachen kann.
All diese müssen auf Ihrer Clientseite entsprechend behandelt
werden, damit Ihre Anwendung auch bei Vorliegen dieser Probleme weiterhin funktioniert. Das
Hypertext Transfer Protocol, das für die Kommunikation zwischen dem Client und dem Server verwendet wird, springt in das gängigste Anwendungs-Layer-Protokoll,
aber dies ist ein Client-Server-Kommunikationsprotokoll.
Nun, das kann oder auch nicht viel Sinn für Sie machen,
es sei denn, Sie haben einen ausreichenden Hintergrund im Netzwerk, aber dies ist ein Protokoll
, das für die Kodierung der Nachrichten verwendet wird, die Sie zwischen Ihrer Clientanwendung austauschen,
die in diesem Fall eine Winkelanwendung ist, und einer Serverseite.
Dieses HTTP-Protokoll ermöglicht es Ihnen, hypertext-basierte Dokumente
von der Serverseite abzurufen, zunehmend die Informationen, die
von der Serverseite heruntergeladen werden, werden in einem der Standard-Codierungsformate wie JSON oder XML codiert.
Und um mit einem Server sprechen zu können,
haben Sie die Unterstützung von verschiedenen HTTP-Aktionen,
oder was wir als HTTP-Verben bezeichnen: die HEAD, GET, POST,
PUT, DELETE, TRACE, OPTIONS und CONNECT.
Wir werden insbesondere die Verben GET, PUT, POST und DELETE genauer sehen,
wenn wir das restliche API-Protokoll ein wenig später untersuchen.
Wie funktioniert das HTTP-Protokoll?
Im HTTP-Protokoll senden Sie eine Anforderung von Ihrer Clientanwendung an den Server, die in
Form einer HTTP-Anforderungsnachricht codiert ist.
Die Anforderungsnachricht enthält normalerweise eine URL in der Anforderungsnachricht,
die angibt, was Sie mit der Serverseite an Sie senden möchten.
Dies ist in der Regel eine GET-Nachricht,
wenn Sie Daten von der Serversite heruntergeladen werden sollen.
Und Sie werden auch angeben, mit welchem bestimmten Server Sie kommunizieren.
Wenn der Server Ihre Anfrage erhält,
ruft der Server die Daten aus seinem Datenspeicher ab, in der Regel eine Datenbank auf der Serverseite,
und packt diese Daten dann in entsprechenden vier zurück
und sendet die Daten an Sie auf Ihrer Clientseite zurück.
Wenn Sie Standard-HTML-, CSS- und Javascript-Code von der Serverseite erhalten,
ist Ihr Browser in der Lage, dies zu rendern.
Zurück mit Anwendungen wie angular stellen Sie in erster Linie eine Verbindung mit dem Server her
und rufen dann die meiste Zeit Daten in Form von JSON oder XML ab.
Mit Ausnahme des anfänglichen Downloads aller Ressourcen
, die für die Ausführung der eckigen Anwendung in Ihrem Browser erforderlich sind.
So, wie wir früher gesehen haben, erfordert die HTTP-Anwendung Nachrichten
zwischen dem Client und dem Server gesendet werden.
Eine Anforderungsnachricht, die normalerweise vom Client an den Server gesendet wird,
und die Anforderungsnachricht besteht aus einer Anforderungszeile plus einer Reihe von Kopfzeilen,
in denen Sie zusätzliche Informationen zur Qualifizierung der Anforderung angeben.
Wir werden die Verwendung verschiedener Header
und Einstellungen in den Kopfzeilen sehen, während wir einige
der Übungen in diesem speziellen Modul durchlaufen.
Die Anforderungszeile und die Kopfzeilen werden durch
eine leere Zeile vom Text der Anforderungsnachricht getrennt.
Der Nachrichtentext kann zusätzliche Daten enthalten, insbesondere
wenn Ihre Clients Daten an die Serverseite senden.
Wenn Sie beispielsweise ein Formular senden, werden
die Informationen innerhalb des Formulars in ein JSON-Format codiert
und dann von der Clientseite an die Serverseite gesendet.
Also, das wird entweder mit einer POST- oder einer PUT-Nachricht geschehen.
Betrachtet man ein wenig mehr Details der HTTP-Anforderungsnachricht,
enthält die typische Anforderungsnachricht in der Anforderungszeile die Methode,
die entweder GET, PUT, PAUSE, DELETE
oder einige der anderen Verben, die Sie zuvor gesehen haben.
Und dann, gefolgt von der URL und der Version des HTTP-Protokolls
, das Sie für die Kommunikation vom Client zur Serverseite verwenden.
Das Kopfzeilenfeld enthält normalerweise einen Kopfzeilenfeldnamen, einen Doppelpunkt
und den Wert für dieses Kopfzeilenfeld.
Und der Körperinhalt könnte, wie ich bereits erwähnt habe, entweder im JSON- oder XML-Format codiert werden.
Hier ist ein Beispiel für eine typische HTTP-Anforderungsnachricht
, die vom Client an den Server gesendet werden kann.
Also, in dieser speziellen Anforderungsnachricht bitten wir den Server zu behalten
und index.hmtl Seite von der Serverseite zur Client-Seite
, so dass es im Browser auf der Client-Seite gerendert werden kann.
Eine Anfrage wie diese würde normalerweise einen leeren Körper in der Anforderungsnachricht haben.
Die meisten Informationen werden in der Anforderungszeile und den Headern der
Anforderungsnachricht codiert.
Wenn der Client die Anforderung an den Server sendet,
verarbeitet der Server die Anforderung und sendet dann eine Antwort an die Client-Seite zurück.
Die Antwortnachricht ist wiederum in drei Teile gegliedert.
Eine Statuszeile mit einigen Informationen darüber, wie die Anforderung verarbeitet wurde
und was an den Client zurückgesendet wird, wird gespeichert.
Die Kopfzeilen enthalten zusätzliche Details darüber, was in der Antwortnachricht enthalten ist,
gefolgt von einer leeren Zeile und dann dem eigentlichen Nachrichtentext.
Ein Beispiel dafür, was normalerweise in einer HTTP-Antwortnachricht enthalten wäre.
In diesem Fall kommt diese Antwortnachricht mit einer 200 zurück
, die ein Statuscode der Nachricht ist.
Wenn Sie hier sehen, 200 in der Anforderungszeile als Statuscode.
Dies bedeutet, dass Ihre Anfrage erfolgreich war
und der Server die Daten zurückgeben kann, die Sie von der Serverseite angefordert haben.
Und dann enthält der Header zusätzliche Anweisungen zur Clientseite,
einschließlich Informationen darüber, wie der eigentliche Nachrichtentext codiert ist.
Dann kann der Text enthalten, wenn Sie die Index HTML-Seite angefordert haben,
wird der Text der Nachricht den HTML-Code
für die Index-Start-HTML-Seite enthalten, wie Sie in diesem Beispiel sehen.
Eine der Informationen in der Statuszeile, die ich als diesen Statuscode bezeichne.
Wenn der Server in der Lage ist, Ihre Anfrage korrekt zu verarbeiten,
sendet er eine Antwort mit einer Statusbewertung von 200 zurück,
was bedeutet, dass alles auf der Serverseite in Ordnung
ist, und die Serverseite gibt die Daten korrekt zurück.
Wenn der Server die Anforderung aus irgendeinem Grund nicht verarbeiten kann,
werden diese Informationen im Statuscode in
dieser Statuszeile der Antwortnachricht codiert.
Die verschiedenen Statuscodes, die normalerweise auftreten,
wenn Sie eine Antwort von der Serverseite erhalten,
enthalten eine 201, was bedeutet, dass, wenn Sie versuchen, ein Objekt auf der Serverseite zu erstellen,
es erfolgreich erstellt wurde oder eine 301, was bedeutet, dass alles, was Sie anfordern,
verschoben wurde dauerhaft an einen neuen Speicherort,
und dass Sie sich am neuen Speicherort dieser Ressource befinden,
wird auf Ihrer Clientseite zurückgegeben.
400s und 500s zeigen in der Regel an, dass es auf der Serverseite einige Probleme gibt.
Ein 404 ist etwas, das Sie oft begegnen, wenn Sie
etwas anfordern, das auf der Serverseite nicht existiert.
In ähnlicher Weise bedeutet ein 500, dass der Server nur aufgibt,
er Ihre Anfrage nicht verarbeiten kann und dann einen internen Serverfehler zurücksendet.
Dies sind zwei häufige Fehlercodes, die auftreten werden.
Die übrigen haben eine spezifische Bedeutung, wie hier in dieser Tabelle aufgeführt.
Es gibt mehr als die Statuscodes, die ich Ihnen in dieser Tabelle gegeben habe,
aber dies sind einige der häufigsten Statuscodes
, die Sie in einer Antwortnachricht von der Serverseite begegnen werden.
Ein weiterer Punkt, den ich erwähnte, ist die Tatsache, dass der Server die Daten
in einem bestimmten Format wie XML oder eXtensible Markup Language oder JSON codieren kann, der
JavaScript-Objekt-Notation dafür.
In der Regel werden wir uns in diesem speziellen Kurs mit Daten beschäftigen
, die hauptsächlich in JSON codiert sind.
Die meisten Anwendungen, clientseitige Anwendungen, einschließlich mobiler Anwendungen,
kommunizieren in der Regel mit dem Server,
und das Datenaustauschformat ist in den meisten Fällen standardmäßig JSON.
Das ist der Grund, warum ich ein paar Minuten damit verbringen werde, Ihnen über JSON zu erklären.
Die JavaScript-Objektnotation, oder JSON, ist ein leichtes Datenaustauschformat.
Der Grund dafür, dass das JSON-Datenformat für uns in diesem Kurs besonders interessant ist,
liegt darin, dass die JavaScript-Objektnotation, wie der Name schon sagt,
sehr einfach in ein Javascript-Objekt abgebildet wird, das Sie mit jedem Javascript-Code verwenden.
Das Konvertieren eines Javascript-Objekts in JSON-Notation
und umgekehrt ist sehr einfach.
Diese JSON-Notation ist eine, was wir nennen,
als selbstbeschreibende und sehr leicht zu verständliche Notation.
Im Javascript-Objektnotationsformat sind
die Daten in einer sehr sauberen, spezifizierten Weise strukturiert.
Dies ist als eine Sammlung von Name/Wert-Paaren
strukturiert, und dies ist als eine geordnete Liste von Werten strukturiert.
Sie können ein Beispiel dafür auf der rechten Seite hier sehen,
wir haben diese JSON-Daten tatsächlich schon früher mit unserer Winkelanwendung verwendet.
Also, jetzt sehen Sie, warum die Daten so strukturiert sind.
Und Sie erkennen auch, dass es sehr einfach ist, mit diesen Daten
in Ihrem Javascript-Audio umzugehen, typescript wird in Ihrer eckigen Anwendung gefangen.
Damit vervollständige ich einen schnellen Überblick über Networking Essentials.
Wir werden nun auf und üben, wo wir einen rudimentären Server einrichten
, der einige Daten dienen, mit denen wir von unserer Winkelanwendung verbinden
und dann Daten mit einem Server austauschen können.
Jetzt werden wir einen vollwertigen Server in einem der späteren Kurse entwickeln, dem
Knotencode JS und dem serverseitigen Entwicklungskurs
, der als letzter Kurs in dieser Spezialisierung kommen würde.