2017-03-11 5 views
0

Ich bin ziemlich neu in der Programmierung und diese Frage geht darum sicherzustellen, dass ich das HTTP-Protokoll richtig bekomme. Mein Problem ist, dass, wenn ich über HTTP-Anfrage/Antwort lese, es aussieht, als müsste es in einem sehr spezifischen Format mit einem Statuscode, HTTP-Versionsnummer, Kopfzeilen, einer Leerzeile gefolgt von dem Hauptteil sein.Wie HTTP-Antwort generiert wird

Allerdings, nach dem Erstellen einer Webanwendung mit Nodejs/Express, musste ich nie einmal Code schreiben, die eine HTTP-Antwort in diesem Format (Ich nehme an, obwohl ich nicht sicher weiß, dass andere Frameworks wie Ruby auf Schienen oder Python/Django sind die gleichen). In der Express-App habe ich einfach die Route-Handler eingerichtet, um die entsprechenden Seiten zu rendern, wenn eine Anfrage an diese Route gestellt wurde.

Ist dies, weil Express die Antwort im richtigen HTTP-Format hinter den Kulissen tatsächlich setzt? Mit anderen Worten, wenn ich den expressJS-Code betrachten würde, wäre da etwas in diesem Code, das tatsächlich eine HTTP-Antwort im HTTP-Format macht?

Meine Verwirrung ist, dass es scheint, dass das HTTP-Anfrage/Antwort-Format so wichtig ist, aber irgendwie musste ich nie Code schreiben, der sich damit für eine Knoten/Express-Anwendung beschäftigt. Vielleicht ist das der ganze Punkt eines Frameworks wie Express ... um Details herauszuholen, damit Entwickler mit Geschäftslogik umgehen können. Und wenn das stimmt, schreibt jemand jemals Web-Apps ohne ein Framework dafür. Wären Sie dann dafür verantwortlich, Code zu schreiben, der die Antwort des Servers in das exakte HTTP-Format bringt?

Antwort

0

ich ziemlich neu bin auf die Programmierung und diese Frage geht es darum, dass ich bekommen das HTTP-Protokoll korrekt. Mein Problem ist, dass, wenn ich über HTTP-Anfrage/Antwort lese, es aussieht, als müsste es in einem sehr spezifischen Format mit einem Statuscode, HTTP-Versionsnummer, Kopfzeilen, einer Leerzeile gefolgt von dem Hauptteil sein.

Nur um Ihnen eine Idee zu geben, gibt es wahrscheinlich Hunderte von Spezifikationen, die etwas mit dem HTTP-Protokoll zu tun haben. Sie befassen sich nicht nur mit dem Protokoll selbst, sondern auch mit dem Datenformat/der Kodierung für alles, was Sie senden, einschließlich Kopfzeilen und all den verschiedenen Inhaltstypen, die Sie senden können, Authentifizierungsschemata, Caching, Statuscodes, URL-Dekodierung usw. Einige der Spezifikationen können Sie sehen, indem Sie hier klicken: https://www.w3.org/Protocols/.

Jetzt eine einfache Anfrage und eine einfache Text-Antwort könnte mit nur ein paar dieser Spezifikationen, aber das Leben ist nicht immer so einfach.

Ist dies, weil Express die Antwort im richtigen HTTP-Format hinter den Kulissen tatsächlich setzt? Mit anderen Worten, wenn ich den expressJS-Code betrachten würde, wäre da etwas in diesem Code, das tatsächlich eine HTTP-Antwort im HTTP-Format macht?

Ja, würde es. Eine Kombination aus Express und HTTP library, die in node.js integriert ist, behandelt alle Details der Spezifikation für Sie. Das ist der Vorteil einer Bibliothek/eines Frameworks. Sie handhaben sogar verschiedene Versionen des Protokolls und das Feedback von Tausenden anderen Entwicklern hat ihnen geholfen, Edge Case Bugs zu bereinigen. Eine gute Bibliothek/ein gutes Framework ermöglicht es Ihnen, immer noch Details über die Antwort (Header, Inhaltstypen, Statuscodes usw.) zu steuern, ohne dass Sie die Detailarbeit durchlaufen müssen, um die genaue Antwort zu erstellen. Das ist eine gute Sache. Sie können Code schneller schreiben und Sie können auf den Schultern von anderen reiten, die bereits Detailinformationen herausgefunden haben, die nichts mit der Logik Ihrer App zu tun haben.

In der Tat könnte man dasselbe über das TCP-Protokoll unter dem HTTP-Protokoll sagen. Kein normaler App-Entwickler möchte seinen eigenen TCP-Stack schreiben. Stattdessen möchten Sie nur einen funktionierenden TCP-Stack verwenden, den Sie verwenden können und der bereits für Sie optimiert wurde.

Allerdings, nach dem Erstellen einer Webanwendung mit NodeJs/Express, ich musste nie wirklich Code schreiben, die eine HTTP-Antwort in diesem Format (Ich nehme an, obwohl ich nicht sicher, dass andere Frameworks wie Ruby on Rails oder Python/Django sind die gleichen). In der Express-App habe ich einfach die Route-Handler eingerichtet, um die entsprechenden Seiten zu rendern, wenn eine Anfrage an diese Route gestellt wurde.

Ja, das ist eine gute Sache. Das Framework hat das Detail für Sie erledigt. Sie rufen einfach res.setHeader(), res.status(), res.cookie(), res.send(), res.json(), etc ... und Express macht die gesamte Antwort für Sie.

Und wenn das stimmt, schreibt jemand jemals Web-Anwendungen ohne ein Framework, um dies zu tun. Wären Sie dann dafür verantwortlich, Code zu schreiben, der die Antwort des Servers in das exakte HTTP-Format bringt?

Wenn Sie nicht ja einen Rahmen oder Bibliothek jeglicher Art und wurden Programmierung an der rohen TCP-Ebene, dann würden Sie für alle Details des HTTP-Protokolls verantwortlich genutzt haben. Aber kaum jemand anderes als Bibliotheksentwickler macht das, weil es ehrlich gesagt nur Zeitverschwendung ist. Jede einzelne Plattform hat mindestens eine Open-Source-Bibliothek, die das bereits tut, und selbst wenn Sie an einer brandneuen Plattform arbeiten, können Sie einen Open-Source-Code viel schneller auf Ihre Plattform portieren, als Sie das alles schreiben könnten dich selber.


Beachten Sie, dass eine der großen Vorteile von node.js ist, dass es ein enormer Körper von Open-Source-Code (meist in NPM und Github) bereits vorverpackten mit node.js. arbeiten Und da node.js serverseitig ist, wo der Code-Speicher normalerweise nicht eng ist und Code nur von der lokalen Festplatte zur Server-Init-Zeit kommt, gibt es wenig Nachteil, ein funktionierendes und getestetes Paket zu greifen, das das tut, was Sie bereits brauchen, auch wenn Sie nur 5% der Funktionalität im Paket verwenden. Oder, schlimmstenfalls, klonen Sie ein vorhandenes Repository und passen Sie es an Ihre Bedürfnisse an.

0

Ist dies, weil Express ist eigentlich die Antwort in die richtigen HTTP-Format hinter den Kulissen?

Ja, genau, ist HTTP so allgegenwärtig, dass fast alle Programmiersprachen/Frameworks das tatsächliche Schreiben und Parsen von HTTP hinter den Kulissen behandeln.

Wer schreibt jemals Web-Apps ohne ein Framework, um dies zu tun. Wäre Sie dann verantwortlich für das Schreiben von Code, der die Antwort des Servers in das genaue HTTP-Format setzt?

Nie (es sei denn, Sie Code schreiben, die sehr niedrigen Niveau Zwicken HTTP Code oder etwas braucht)

Verwandte Themen