Script CGI e Python / Ruby [chiuso]

0

Sono nuovo nella programmazione web. Ora, sfortunatamente, ero un bambino durante l'avvento del world wide web e non avevo accesso neanche io. Così ora, quando ho appena iniziato, mi sembra che ci sia una miriade di concetti da imparare e capire.

Ad esempio, ho appena letto sugli script CGI. Ora, di solito quando vedo persone parlare di programmazione di applicazioni web in questi giorni, stanno usando qualche framework per Ruby o Python o anche per PHP.

Come si riferiscono questi linguaggi di programmazione e gli script CGI scritti in C (?)?

Questi framework in qualche modo convertono il codice scritto in Ruby o Python in CGI o stanno facendo qualcos'altro interamente? Sembra che ci sia troppo da sapere per capire anche come funziona il sito Web dinamico più semplice.

Inoltre, ho bisogno di imparare l'HTTP in profondità prima ancora di imparare a costruire app Web?

    
posta SilverSlash 09.06.2015 - 08:46
fonte

1 risposta

1

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.

    
risposta data 09.06.2015 - 17:05
fonte

Leggi altre domande sui tag