2016-10-13 5 views
4

Ich fragte mich, ob mir jemand die Bedeutung einer serverseitigen Anfrage erklären könnte. Es könnte nur die Terminologie sein, die ich nicht ganz verstehe. Für mich klingt es wie eine Anfrage vom Server an den Client, aber ich glaube nicht, dass es das ist.Bedeutung der serverseitigen Anforderung

Es ist in Bezug auf das PHP PSR7. Ich versuche herauszufinden, warum es sowohl die RequestInterface als auch die ServerRequestInterface hat. Ich kann nirgendwo etwas dazu sagen und ich kann nicht den Grund dafür sehen, warum diese beiden nicht nur in einer Schnittstelle zusammengeführt werden.

Antwort

3

Ich bin damit einverstanden, dass es nicht klar ist, was sie von „serverseitigen Anfragen“ bedeuten. Es ist bekannt, dass HTTP-Anfragen von Clients (Browsern, Bots, REST-API-Benutzern usw.) gesendet und schließlich von Servern empfangen werden. Das Wort "Server" kann sich jedoch auf verschiedene Dinge in verschiedenen Kontexten beziehen.

Eine HTTP-Anforderung wird von einem HTTP-Server wie Apache, Nginx und Microsoft IIS empfangen. Die Server stellen Server Application Programming Interface (SAPI) zur Verfügung, was insbesondere die Nachverarbeitung von Informationen ermöglicht, die von den Webservern analysiert werden.

Die PHP-Engine (Zend) interagiert über ihr SAPI-Modul (Server API) mit verschiedenen Umgebungen. Das Modul besteht aus einer Reihe von Submodulen: CLI (Command Line Interface), CGI (Common Gateway Interface), Apache, FPM (FastCGI Process Manager) und anderen. Jeder hat seine eigenen Vorstellungen über die Inhalte der PHP-Superglobals (example).

Die unformatierten HTTP-Anforderungen werden von einem Webserver analysiert. PHP fragt die geparsten Daten vom Web-Server über SAPI zur weiteren Verarbeitung ab und gibt sie dann insbesondere in Form von Superglobals an uns weiter.

RequestInterface stellt somit die erste einfache HTTP-Anforderung, die nicht seine Header nicht klassifizieren oder Teile des Nachrichtentexts in Cookies, Hochladen von Daten, GET- oder POST-Variablen usw.wie es indirekt in den official documentation erwähnt wird:

Die RequestInterfaceResponseInterface und haben im Wesentlichen 1: 1-Korrelation mit den Anforderungs- und Antwort-Nachrichten beschrieben in RFC 7230. bieten sie Schnittstellen für Wertobjekte implementieren, die auf die spezifische HTTP-Nachricht entsprechen, Typen, die sie modellieren.

Es bietet einfach eine Schnittstelle für allgemeine Anfrage Parameter wie URI, Schema, Abfrage und Port, zum Beispiel.

Und ServerRequestInterface stellt die geparste Version der einfachen Darstellung von HTTP-Nachricht (Anfrage). Es führt den Zugriff auf logisch klassifizierte Teile der Nachricht ein: Die generierten Teile der Serverseite: Hochgeladene Dateien, Cookies, Serverparameter und andere.

Ich schlage vor, denken an RequestInterface als HTTP-Anforderung, wie sie vom Client kam. Und ServerRequestInterface als bereits nicht ganz Client Anfrage =), d. H. Version der ursprünglichen Anfrage vom Server (SAPI) geändert.

+0

Vielen Dank, das macht viel mehr Sinn. Was mich am meisten umgehauen hat, war die Tatsache, dass sie in der Dokumentation von PSR7 als serverseitige und clientseitige Anfragen bezeichnet werden. Server-Side klingt wie ein Server eine Anfrage und Client-Seite als das Gegenteil. Raw-Anfrage vs. SAPI-manipulierte Anfrage macht mehr Sinn. –

1

kann nicht eine bessere Antwort geben als:

RequestInterface die allgemeine Darstellung eines Anforderungsnachricht HTTP zur Verfügung stellt. Serverseitige Anforderungen benötigen jedoch aufgrund der Art der serverseitigen Umgebung zusätzliche Behandlung. Server-seitige Verarbeitung muss Common Gateway Schnittstelle (CGI), und insbesondere PHP Abstraktion und Erweiterung von CGI über seine Server-APIs (SAPI) berücksichtigen. PHP ist Vereinfachung herum Eingabe über superglobals wie Ordnende bereitgestellt:

..

ServerRequestInterface erstreckt RequestInterface eine Abstraktion um diese verschiedenen superglobals bereitzustellen. Diese Praxis hilft reduzieren die Kopplung an die Superglobals von den Verbrauchern, und ermutigt und fördert die Fähigkeit, Anfrage Verbraucher zu testen.

http://www.php-fig.org/psr/psr-7/

+0

Das erklärt, dass Serveranforderungen zusätzliche Behandlung benötigt, aber nicht, was eine Serveranforderung ist. Was/Wer macht eine solche Anfrage? Server Request vs Client Request, das ist es, wonach ich suche. –

+0

Serveranfrage = HTTP-Anfrage. Ist das klar? der Server ist in diesem Fall ein http-Server – nogad

+0

Okay, also ist eine Server-Anfrage nur die normalen Anfragen von Clients an Server. Das macht viel mehr Sinn, also nehme ich an, dass das 'RequestInterface' für Dinge wie CLI Requests und ähnliches gedacht ist? –