Hoe Python SimpleHTTPServer te gebruiken

How Use Python Simplehttpserver



De hoofdtaak van de webserver is het afhandelen van de HTTP-verzoeken van de client. Het wacht op de HTTP-verzoeken die afkomstig zijn van het specifieke IP-adres en poortnummer, handelt het verzoek af en stuurt het antwoord van de klant terug. Python gebruikt de EenvoudigeHTTPServer module om direct een webserver te maken en eenvoudig de inhoud van het bestand van de server te bedienen. Het kan ook worden gebruikt voor het delen van bestanden. Hiervoor moet je deze module inschakelen met de locatie van de deelbare bestanden. Deze module wordt geleverd met de Python-interpreter. U hoeft het niet te installeren. Aangezien deze module is samengevoegd met de http.server module in python3, dus je moet uitvoeren http.server om de webserver in python3 uit te voeren. Hoe webserver kan worden gebruikt om HTTP-verzoeken af ​​te handelen en bestanden te delen, is in deze zelfstudie getoond.

Start de webserver vanaf de terminal

Voer de volgende opdracht uit om de webserver vanaf de terminal uit te voeren. Als er geen poortnummer is gedefinieerd in de opdracht, start de webserver standaard op poort 8000.







$ python3 -m http.server



De volgende uitvoer zal verschijnen als de webserver correct is gestart. CTRL+C wordt ingedrukt om de server te stoppen.




Voer de volgende opdracht uit om de webserver op 8080-poort te starten.





$ python3 -m http.server 8080

De volgende uitvoer verschijnt als de webserver wordt gestart op de 8080-poort.



Voer de webserver uit met behulp van het Python-script

Voer de volgende opdrachten uit om een ​​map met de naam te maken Web en ga naar de map. Alle scriptbestanden en HTML-bestanden van deze zelfstudie worden in deze map gemaakt.

$ mkdir web

$CDWeb

Maak een HTML-bestand met de naam testHTML.html binnen in de Web map met het volgende script. Dit bestand wordt later vanaf de webserver aangeboden.

testHTML.html

< html >

< hoofd >

< titel >

Test de Python-webserver

</ titel >

</ hoofd >

< lichaam >

< centrum >

< img src='logo.jpeg' alles='Afbeelding niet gevonden'/>

< h2 stijl='kleur groen'>Gefeliciteerd! Uw webserver wordt met succes uitgevoerd.</ h2 >

< P >Op bezoek komen< tot href='www.linuxhint.com'>LinuxHint.com</ tot >voor meer tutorials over Python</ P >

</ centrum >

</ lichaam >

</ html >

Voorbeeld-1: Voer de webserver uit in het specifieke poortnummer

Maak een python-bestand met het volgende script om de webserver op 8008-poort uit te voeren. http.server module is geïmporteerd om de webserver te laten draaien, en de SocketServer module is geïmporteerd om het HTTP-verzoek van de 8080-poort af te handelen. Een object met de naam Handler is gemaakt om de HTTP-verzoeken af ​​te handelen. voor altijd() functie wordt aangeroepen om de webserver uit te voeren. Er is geen beëindigingsvoorwaarde toegevoegd aan het script. Het script genereert dus een foutmelding wanneer de gebruiker de server probeert te stoppen.

# Servermodule importeren

importerenhttp.server

# SocketServer-module importeren

importerensocketserver


# Stel het poortnummer in

haven= 8080

# Maak een object voor het afhandelen van HTTP-verzoeken

Handler=http.server.SimpleHTTPRequestHandler


# Voer de server voor altijd uit om de HTTP-verzoeken af ​​te handelen

metsocketserver.TCPServer(('',haven),Handler) alshttpd:

afdrukken('Webserver draait op http://localhost:%s'%haven)

httpd.serve_forever()

Uitgang:

De volgende uitvoer zal verschijnen na het uitvoeren van het bovenstaande script.


De lijst met bestanden en mappen van de scriptlocatie wordt weergegeven als de volgende URL vanuit de browser wordt uitgevoerd.

http://localhost:8080

Als de gebruiker vanaf de terminal op CTRL+C drukt of op de stopknop van de PyCharm-editor drukt, wordt het volgende foutbericht weergegeven. Dit probleem is opgelost in het volgende voorbeeld van deze tutorial.

Voorbeeld-2: Voer de webserver uit met het poortnummer gedefinieerd door de opdrachtregel

Maak een python-bestand met het volgende script om een ​​webserver op de specifieke poort uit te voeren als het opdrachtregelargument het poortnummer geeft; anders wordt 5000 als standaardpoort gebruikt. sys module is geïmporteerd in het script om de opdrachtregelargumentwaarden te lezen. probeer-behalve blok is toegevoegd aan het script om de fout af te handelen wanneer de gebruiker de server probeert te stoppen. Als de uitzondering KeyboardInterrupt verschijnt na het draaien van de server, dan is de dichtbij() functie wordt aangeroepen om de webserver te stoppen.

# Servermodule importeren

importerenhttp.server

# SocketServer-module importeren

importerensocketserver

# Systeemmodule importeren

importeren sys


proberen:

# Stel het poortnummer in

indien sys.argv[1:]:

haven= int(sys.argv[1])

anders:

haven= 5000

# Stel het IP-adres in

server adres= ('127.0.0.1',haven)

# Maak een object voor het afhandelen van HTTP-verzoeken

Handler=http.server.SimpleHTTPRequestHandler


# Voer de webserver voor altijd uit om de HTTP-verzoeken af ​​te handelen

metsocketserver.TCPServer(('',haven),Handler) alshttpd:

afdrukken('Webserver draait op http://localhost:%s'%haven)

httpd.serve_forever()

# De server gestopt

behalve Toetsenbordonderbreking:

httpd.server_close()

afdrukken('De server is gestopt.')

Uitgang:

De volgende uitvoer wordt weergegeven na het uitvoeren van het bovenstaande script zonder opdrachtregelargumentwaarde.

De volgende uitvoer zal verschijnen als het HTML-bestand wordt uitgevoerd dat in de vorige stap is gemaakt vanaf de webserver.

Open het configuratiedialoogvenster in het menu Uitvoeren van de PyCharm-editor om de waarde van het opdrachtregelargument in te stellen. Het veld Parameters wordt gebruikt om het opdrachtregelargument in te stellen en 3000 wordt hier ingesteld als de argumentwaarde.

De volgende uitvoer verschijnt als u het script opnieuw uitvoert nadat u de argumentwaarde hebt ingesteld.

Voorbeeld-3: Voer de webserver uit met het HTML-bestand

Maak een python-bestand met het volgende script om de webserver uit te voeren door het HTML-bestand voor de basis-URL te definiëren. De hostnaam en het poortnummer zijn gedefinieerd aan het begin van het script. PythonServer class in het script heeft gedefinieerd om het HTML-bestand in de browser weer te geven wanneer de webserver wordt gestart.

# Importeer de servermodule

importerenhttp.server


# Stel de hostnaam in

GASTHEER= 'lokale host'

# Stel het poortnummer in

HAVEN= 4000


# Definieer klasse om de indexpagina van de webserver weer te geven

klasPythonServer(http.server.SimpleHTTPRequestHandler):

zekerdo_GET(zelf):

indien zelf.pad == '/':

zelf.pad = 'testHTML.html'

opbrengsthttp.server.SimpleHTTPRequestHandler.do_GET(zelf)


# Declareer object van de klasse

web Server=http.server.HTTP-server((GASTHEER,HAVEN),PythonServer)


# Print de URL van de webserver

afdrukken('Server gestart http://%s:%s'%(GASTHEER,HAVEN))


proberen:

# Voer de webserver uit

web Server.serve_forever()

behalve Toetsenbordonderbreking:

# Stop de webserver

web Server.server_close()

afdrukken('De server is gestopt.')

Uitgang:

De volgende uitvoer zal verschijnen om het bovenstaande script uit te voeren.

De volgende pagina verschijnt in de browser als de basis-URL van de webserver wordt uitgevoerd.

Conclusie

De verschillende manieren om webservers te implementeren met behulp van http. server module heeft in deze tutorial laten zien om python-gebruikers te helpen bij het maken van een eenvoudige webserver in Python.