For example, I just read about CGI scripts. Now, usually when I see people talk about web application programming these days, they're using some framework for Ruby or Python or even PHP.
Il CGI è considerato da molti la tecnologia obsoleta al giorno d'oggi per tutto tranne che per le applicazioni più semplici, alcuni dei tuoi materiali di riferimento potrebbero essere obsoleti.
How do these programming languages and CGI scripts written in C(?) relate?
OK, diciamo che avevamo un codice perl come script CGI:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, world!\n";
Quando c'è una richiesta HTTP inviata al server per questo file (es .: http://www.someserver.com/cgi-bin/hello.pl
) il server prima eseguirà questo codice e invierà l'output standard come risposta. Questo è il motivo per cui dobbiamo includere il "Content-type: text/html\n\n"
nella risposta come intestazione HTTP.
I Web Framework tuttavia sono una bestia piuttosto diversa. Nella loro descrizione più semplice, sono semplicemente un termine generico per qualsiasi set di strumenti che fornisce funzionalità associate a attività di sviluppo web comuni.
In pratica, tuttavia, quasi tutti funzionano in modo simile e forniscono strumenti simili.
Da Wikipedia:
many frameworks provide libraries for database access, templating frameworks and session management
Confrontiamo il precedente codice CGI con questo codice python scritto usando un framework Web chiamato Flask:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
Per evitare il più possibile la sintassi Python possibile, riduci questo codice a:
import Flask
app = Flask()
@app.route('/')
def hello_world():
return 'Hello World!'
app.run()
È importante ricordare che questo codice in realtà non funziona, è solo abbreviato per chiarezza.
La prima riga importa il nostro framework applicativo.
Il prossimo definisce un'app variabile che farà riferimento alla nostra applicazione
Il blocco def hello_world():
definisce una funzione che restituisce la stringa Hello World!
Il @app.route('/')
dice di eseguire questa funzione quando viene richiesta la route URL /
. Oppure, per chiarezza, quando punti il tuo browser a http://www.someserver.com/
app.run()
quindi avvia un nuovo server Web sulla macchina che serve i percorsi della nostra applicazione.
Queste due parti di codice (CGI perl e Flask python) fanno la stessa cosa funzionalmente ma la raggiungono in un modo molto diverso. Puoi vedere ad esempio nell'applicazione Flask che non abbiamo avuto bisogno della riga "Content-type: text/html\n\n"
. Questo perché il framework si prende cura di queste cose per noi nel server Web interno.
Suggerirei di seguire un buon tutorial per un framework web Python come Flask come buon punto di partenza per capire cos'è un framework web e come funziona. Ad esempio, questo: link
Also, do I need to learn HTTP in depth before I even begin learning to build Web apps?
Non in modo approfondito, una conoscenza di base di GET / POST e dei codici di stato sarà tutto ciò che serve per iniziare ad apprendere la maggior parte dei framework web. Detto questo, la conoscenza è sempre buona, puoi riempire la tua comprensione mentre progredisci ma non concentrarti interamente sulla completa comprensione dell'interoperabilità di ogni sottocomponente, dal momento che nel nostro campo è francamente un obiettivo irraggiungibile.
Spero che questo sia stato di aiuto.