|
You last visited: Today at 08:00
Advertisement
FrontEnd - Backend Trennung [Python]
Discussion on FrontEnd - Backend Trennung [Python] within the General Coding forum part of the Coders Den category.
01/02/2020, 13:38
|
#1
|
elite*gold: 313
Join Date: Oct 2014
Posts: 1,367
Received Thanks: 284
|
FrontEnd - Backend Trennung [Python]
Schönen Mittag,
Das Thema ist eher weniger Python spezifisch. Falls jemand einen Rat seitens php oder sonstigem hat, freut es mich dennoch.
Mich beschäftigt in letzter Zeit relativ häufig die Frage, FrontEnd - BackEnd Trennung.
Bis dato habe ich eigentlich nie darauf geachtet. Egal ob PHP, Python oder Powershell.
Da ich aktuell mit Python eine Desktop Applikation programmieren will, wollte ich diesmal Front und Backend trennen.
Es kamen aber doch relativ schnell fragen und Unklarheiten zu dem Thema auf.
Um nicht irgendetwas zu machen, dachte ich es schadet nicht vorher mehr informationen einzuholen.
Folgendes Projekt:
Über eine GUI ( Desktop App ) am Client soll der User diverse Aktionen in einem Browsergame steuern können.
Weiters sollen diverse Daten in der GUI ausgegeben werden.
Ich habe das Projekt mehr oder weniger schon durchgeführt, nur ohne GUI.
So würd ich mir das erstmals vorstellen.
Ich hab am Client nen GUI. Je nachdem was man anhackt / einstellt werden post/get requests an den root server geschickt.
Dieser verarbeitet diese, und schickt entweder die Daten zurück, oder leitet Sie in abgeändeter Form an den Browsergame Server weiter.
Requests verschicken war/ist bis dato kein Problem. Ich musste mich über die Verarbeitung am Server nicht kümmern, da dieser Zwischenschritt immer übersprungen wurde.
Wie aber richte ich nun am root server ein, dass die von der GUI verschickten requests empfangen und dementsprechend werden, um dann weiterverschickt werden ?
Ist sowas überhaupt sinnvoll ?
Danke erstmal fürs durchlesen. Eventuell findet sich eine/r die diesbezüglich mehr Erfahrung haben wie ich.
Lg
|
|
|
01/02/2020, 19:21
|
#2
|
elite*gold: 0
Join Date: Apr 2011
Posts: 363
Received Thanks: 167
|
Quote:
Originally Posted by Mad0ck
Schönen Mittag,
Das Thema ist eher weniger Python spezifisch. Falls jemand einen Rat seitens php oder sonstigem hat, freut es mich dennoch.
Mich beschäftigt in letzter Zeit relativ häufig die Frage, FrontEnd - BackEnd Trennung.
Bis dato habe ich eigentlich nie darauf geachtet. Egal ob PHP, Python oder Powershell.
Da ich aktuell mit Python eine Desktop Applikation programmieren will, wollte ich diesmal Front und Backend trennen.
Es kamen aber doch relativ schnell fragen und Unklarheiten zu dem Thema auf.
Um nicht irgendetwas zu machen, dachte ich es schadet nicht vorher mehr informationen einzuholen.
Folgendes Projekt:
Über eine GUI ( Desktop App ) am Client soll der User diverse Aktionen in einem Browsergame steuern können.
Weiters sollen diverse Daten in der GUI ausgegeben werden.
Ich habe das Projekt mehr oder weniger schon durchgeführt, nur ohne GUI.
So würd ich mir das erstmals vorstellen.
Ich hab am Client nen GUI. Je nachdem was man anhackt / einstellt werden post/get requests an den root server geschickt.
Dieser verarbeitet diese, und schickt entweder die Daten zurück, oder leitet Sie in abgeändeter Form an den Browsergame Server weiter.
Requests verschicken war/ist bis dato kein Problem. Ich musste mich über die Verarbeitung am Server nicht kümmern, da dieser Zwischenschritt immer übersprungen wurde.
Wie aber richte ich nun am root server ein, dass die von der GUI verschickten requests empfangen und dementsprechend werden, um dann weiterverschickt werden ?
Ist sowas überhaupt sinnvoll ?
Danke erstmal fürs durchlesen. Eventuell findet sich eine/r die diesbezüglich mehr Erfahrung haben wie ich.
Lg
|
So u want a proxy api for your gui, you can use Flask for that
proxyAPI.py
PHP Code:
from flask import request,Response from flask_api import FlaskAPI, exceptions import requests
app = FlaskAPI(__name__)
def cleanRespHeaders(resp): excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection'] #actual response headers headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers] return headers
@ app.route("/api/login",methods=['POST']) def dologin(): #if headers needed u need to pass them #request headers (for example current session cookie) _headers = {key: value for (key, value) in request.headers if key != 'Host'} #forward request to actual server resp = requests.post("https://reqres.in/api/login",data=request.get_data(),headers=_headers) response_headers = cleanRespHeaders(resp) response = Response(resp.content, resp.status_code, response_headers) return response
@ app.route("/api/data",methods=['GET']) def fetchData(): _headers = {key: value for (key, value) in request.headers if key != 'Host'} response = requests.get("https://reqres.in/api/users/2",headers=_headers) return response.content
if __name__ == "__main__": app.run(debug=True)
GuiProxy.py
Code:
import requests
import json
apiEndPoint = "http://localhost:5000/"
def doLogin(payload):
return requests.post(apiEndPoint +"api/login",data=json.dumps(payload),headers={"content-type":"application/json"})
def getData():
return requests.get(apiEndPoint +"api/data")
response = doLogin(
{
"email": " ",
"password": "cityslicka"
}
)
print("Login response")
print(response.content)
print("\nResponse headers")
print(response.headers)
print("\nData response")
response = getData()
print(response.content)
|
|
|
01/02/2020, 20:20
|
#3
|
elite*gold: 313
Join Date: Oct 2014
Posts: 1,367
Received Thanks: 284
|
Quote:
Originally Posted by elmarcia
So u want a proxy api for your gui, you can use Flask for that
proxyAPI.py
PHP Code:
from flask import request,Response
from flask_api import FlaskAPI, exceptions
import requests
app = FlaskAPI(__name__)
def cleanRespHeaders(resp):
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
#actual response headers
headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
return headers
@ app.route("/api/login",methods=['POST'])
def dologin():
#if headers needed u need to pass them
#request headers (for example current session cookie)
_headers = {key: value for (key, value) in request.headers if key != 'Host'}
#forward request to actual server
resp = requests.post("https://reqres.in/api/login",data=request.get_data(),headers=_headers)
response_headers = cleanRespHeaders(resp)
response = Response(resp.content, resp.status_code, response_headers)
return response
@ app.route("/api/data",methods=['GET'])
def fetchData():
_headers = {key: value for (key, value) in request.headers if key != 'Host'}
response = requests.get("https://reqres.in/api/users/2",headers=_headers)
return response.content
if __name__ == "__main__":
app.run(debug=True)
GuiProxy.py
Code:
import requests
import json
apiEndPoint = "http://localhost:5000/"
def doLogin(payload):
return requests.post(apiEndPoint +"api/login",data=json.dumps(payload),headers={"content-type":"application/json"})
def getData():
return requests.get(apiEndPoint +"api/data")
response = doLogin(
{
"email": " ",
"password": "cityslicka"
}
)
print("Login response")
print(response.content)
print("\nResponse headers")
print(response.headers)
print("\nData response")
response = getData()
print(response.content)
|
Hey,
Thanks for the fast response !
Well so the way to go is flask. Interesting.
Code:
if __name__ == "__main__":
app.run(debug=True)
so basically I call the proxyAPI on my root server once, and from then on I can send requests to my server ?
Is it actually running in an endless loop then ? Or how should / can I understand that.
Do I need to recall the script after one request ? :/
Is that common in praxis to split front end and backend like that ?
If not, how would it be done normally.
For me right now, it only makes sense that way to split front and backend with requests to get data. Otherwise it wouldnt be totally separated.
Or do I missunderstand something.
Many thanks in advance !
|
|
|
01/03/2020, 05:02
|
#4
|
elite*gold: 0
Join Date: Apr 2011
Posts: 363
Received Thanks: 167
|
1)You change the proxy endpoints to whatever you want and forward the request to the game to get data. (Your gui consumes the proxyapi)
2) Flask creates a loop, when you run the script it listens in port 5000 for requests (port can be changed), then u can make as many requests as you want.
3) splitting front end and back end is a way to maintain code / add functionality independant of the user's view.
You can reuse the backend with lots of differents frontend (mobile / web / desktop)
|
|
|
01/03/2020, 13:03
|
#5
|
elite*gold: 313
Join Date: Oct 2014
Posts: 1,367
Received Thanks: 284
|
Quote:
Originally Posted by elmarcia
1)You change the proxy endpoints to whatever you want and forward the request to the game to get data. (Your gui consumes the proxyapi)
2) Flask creates a loop, when you run the script it listens in port 5000 for requests (port can be changed), then u can make as many requests as you want.
3) splitting front end and back end is a way to maintain code / add functionality independant of the user's view.
You can reuse the backend with lots of differents frontend (mobile / web / desktop)
|
Many thanks.
I really appreciate your answers
|
|
|
 |
Similar Threads
|
[Release][Node.js] Backend + Frontend / WEB with nice design.
12/17/2015 - SRO PServer Guides & Releases - 8 Replies
There's been a long time I haven't released anything so here's some stuff some might find useful.
This is a pretty much bare backend server + started website (it's not complete) on the base of Node.js, express + sockets and MSSQL connection. All you need to run this is to install Node.js from https://nodejs.org/en/
Guide to run:
- install node.js
- press server-run.bat
- server runs on port :81, you can change that in server.js
Notice:
|
Textdatei mit komma-trennung auflösen
03/30/2012 - AutoIt - 14 Replies
Zum einen entschuldigung wenn es dazu schon ein thread gibt, ich habe ihn nicht gefunden.
Ich habe folgendes Problem. Ich habe eine Listbox die so aufgebaut
ist.
$ListView1 = GUICtrlCreateListView("Barcode|EAN|Zeit|Datum |Geschäft|Ware|Kategorie|Stück|Einzelpreis", 8, 224, 746, 342)
In der Textdatei stehen die werte zu den "Posten" mit komma trennung wie bekomme ich die Daten in die jeweilige Spalte ?
also so:
|
[Suggestion] Trennung der Sektion "User Submitted News"
03/24/2012 - Suggestions & Feedback - 22 Replies
Hey Com,
ich würde gerne eine Kleinigkeit vorschlagen.
Da ich eher an der technischen, anstatt der Spiele Welt, interssiert bin und in der Sektion "User submitted News" leider alles aufeinander trifft.
Mein Vorschlag wäre eine kleine Spaltung und zwar in:
Technical News
MMO News
General News
|
Die Trennung vom Netz Problem LC
02/13/2010 - Last Chaos - 0 Replies
ciao a tutti sono italiano e gioco nella versione USA di LC. premetto che non mi intendo di trainer, cheat e hack. Pero se ho capito bene, il problema della disconnessione durante l'uso del trainer non e dovuta a un mal funzionamento del trainer e neanche del sovraccarico dei server, ma al nuovo sistema di protezione che hanno attivato dopo il rilascio delle 4 nuove patch. il nuovo sistema di protezione funziona che, il server rileva l'ip dell'account che utulizza il trainer e dopo pochi...
|
All times are GMT +1. The time now is 08:01.
|
|