REST anrop från en WS till en annan i Flask

Permalänk

REST anrop från en WS till en annan i Flask

Hej,

Jag håller på att lära mig REST web services och har stött på ett problem. Jag håller på att skapa en liten webbapplikation som ska kunna lägga till en student samt ett betyg i en databas. För att kunna göra detta så har jag dels "checkAppCodeWS(Kurskod, Termin" som skall hämta en anmälningskod om det matchar med argumenten. Jag har också "checkStudOnCourseWS(Anmälningskod, Ideal)" som skall kolla ifall en student finns i en kurs eller ej som returnerar True/False. Dessa två är kopplade mot databaser och fungerar felfritt.

Det jag vill göra nu med min tredje WS är att på något sätt "knyta samman dessa" så att det inte ska gå att lägga till ett betyg om inte
checkStudOnCourseWS är true.

Har ni några förslag på hur jag ska gå tillväga för att kunna göra detta? Jag vill alltså kunna anropa en annan WS och använda mig av den responsen på något sätt.

Det är def regResultat() som jag vill göra anrop från.

Min Flask: https://snipplr.com/view/329851/flask/

@app.route('/') def index(): return render_template("registerHtml.html") @app.route('/checkAppCode/<course>/<period>', methods= ["GET"]) def checkAppCodeWS(course, period): myCursor2 = mydb.cursor() query2 = ("SELECT anmalningskod FROM paraplyet.kursinfo WHERE kurskod = " + "'" + course + "' AND termin = " + "'" + period + "'") myCursor2.execute(query2) myresult2 = myCursor2.fetchall() return jsonify(myresult2) @app.route('/checkStudOnCourse/<string:AppCode>/<string:ideal>', methods= ["GET"]) def checkStudOnCourseWS(AppCode, ideal): myCursor3 = mydb.cursor() query3 = ("SELECT studentID FROM Ideal.kursSokande WHERE anmalningskod = " + "'" + AppCode + "' AND Ideal = " + "'" + ideal + "'") myCursor3.execute(query3) myresult3 = myCursor3.fetchall() if len(myresult3) == 0: return render_template('Invalid.html') else: return jsonify({'Student in course ': True}) @app.route('/register', methods=["POST", "GET"]) def regResultat(): if request.method == "POST": Period = request.form['period'] #ProvNr = request.form['provNr'] #Betyg = request.form['betyg'] Kurskod = request.form['kurskod'] #Datum = request.form['datum'] Ideal = request.form['ideal'] AppCodeUrl = 'http://127.0.0.1:5000/checkAppCodeWS/'+Kurskod+'/'+Period AppCodeResp = requests.get(AppCodeUrl) anl = AppCodeResp.json() Anmalningskod = str(anl['Anmalningskod']) CheckStudOnCourse = 'http://127.0.0.1:5000/checkAppCodeWS/'+Anmalningskod+'/'+Ideal CheckStudOnResp = requests.get(CheckStudOnCourse) anl2 = CheckStudOnResp.json() print (anl2) if __name__ == '__main__': app.run() app.debug = True

Min HTML form: https://snipplr.com/view/329852/html/

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>asdasd</title> </head> <body> <form action="/register" method="POST"> <input type="text" placeholder="Period" name="period" /><br> <input type="text" placeholder="kursKod" name="kurskod" /><br> <button type="submit" placeholder="submit" name ="submit"></button> </form> </body> </html>

Redigerade in koden.
Permalänk
Hedersmedlem
Skrivet av lodarletarn:

*OBS: Som alltid saknar jag code-blocksen skickar därför snippets*

Det finns [code][/code]-block som du kan använda. Jag tog mig friheten att redigera in det i ditt inlägg, och passade dessutom på att ge dig lite syntax highlighting via Pygments.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem

Hej! Det var ett tag sen detta, hur går det?
Behöver du fortfarande hjälp?

Permalänk

@CloX:

Hej, jag fixade det. Tack ändå!