Prima effettivamente rispondere alla tua domanda:
parametri in un URL (ad esempio key=listOfUsers/user1
) sono GET
parametri e non si dovrebbe essere li utilizzano per POST
richieste. Una rapida spiegazione della differenza tra GET e POST può essere trovata here.
Nel tuo caso, di fare uso di principi REST, probabilmente si dovrebbe avere:
http://ip:5000/users
http://ip:5000/users/<user_id>
Poi, ogni URL, è possibile definire il comportamento di diversi metodi HTTP (GET
, POST
, PUT
, DELETE
). Ad esempio, su /users/<user_id>
, si desidera che il seguente:
GET /users/<user_id> - return the information for <user_id>
POST /users/<user_id> - modify/update the information for <user_id> by providing the data
PUT - I will omit this for now as it is similar enough to `POST` at this level of depth
DELETE /users/<user_id> - delete user with ID <user_id>
Quindi, nel tuo esempio, si vuole fare un POST
-/users/user_1
con i dati POST essere "John"
. Quindi l'espressione XPath o qualsiasi altro modo in cui desideri accedere ai tuoi dati dovrebbe essere nascosta all'utente e non strettamente legata all'URL. In questo modo, se decidi di cambiare il modo di archiviare e accedere ai dati, invece di modificare tutti gli URL, dovrai semplicemente modificare il codice sul lato server.
Ora, la risposta alla tua domanda: Qui di seguito è un semi-pseudocodice di base di come si può ottenere quello che ho citato sopra:
@app.route('/users/<user_id>', methods = ['GET', 'POST', 'DELETE'])
def user(user_id):
if request.method == 'GET':
"""return the information for <user_id>"""
.
.
.
if request.method == 'POST':
"""modify/update the information for <user_id>"""
# you can use <user_id>, which is a str but could
# changed to be int or whatever you want, along
# with your lxml knowledge to make the required
# changes
data = request.form # a multidict containing POST data
.
.
.
if request.method == 'DELETE':
"""delete user with ID <user_id>"""
.
.
.
else:
# POST Error 405 Method Not Allowed
.
.
.
Ci sono un sacco di altre cose da considerare come il POST
richiesta tipo di contenuto, ma penso che quello che ho detto finora dovrebbe essere un punto di partenza ragionevole. So che non ho risposto direttamente alla domanda esatta che stavi chiedendo, ma spero che questo ti aiuti. Farò anche alcune modifiche/aggiunte successivamente.
Grazie e spero che questo sia utile. Per favore fatemi sapere se ho sbagliato qualcosa.
devi fare qualcosa di speciale per il posto da ottenere instradato indietro correttamente?Ho/concorsi/ istituito, ma quando si verifica il POST, posta a/concorsi, quindi la logica di gestione post non viene mai raggiunta. –