2016-10-09 3 views
0

In node.js zu löschen, ichPUT in Node.js

app.route('/').get(getObjectList).post(postAddObject).put(putDeleteObject); 

verwenden kann, aber ich weiß nicht, wie ...put(putDeleteObject) in html auszulösen.

Ist es wahr, dass wir auf post und get in HTML beschränkt sind? Wann kann ich dann put verwenden? Ist dies nur für REST-Anforderungen, z. B. durch jQuery?

Wie löschen Sie normalerweise Objekte? Ich denke, es ist sicherer, eine Post-Anfrage als eine Get-Anfrage zu durchlaufen, aber es wäre toll, sie wie im Codebeispiel zu verketten, aber es ist wahrscheinlich nicht möglich, wenn das HTML nicht zwischen Post und Put unterscheiden kann . Ich habe einige Beispiele gesehen, wo sie

<form method="post"> 
    <input type='hidden' name='_method' value='put'> 
    <button type='submit'>Delete</button> 
</form> 

verwenden, aber es funktioniert nicht für mich.

bearbeiten

Ich meinte DELETE und nicht PUT, aber das Problem gleich bleiben zu verwenden. Ich weiß nicht, wie ich mein HTML ändern kann, um die DELETE Anfrage zu unterstützen.

+0

Um PUT und DELETE Verben zu unterstützen, können Sie mit [Methode-override] (https: // Github .com/expressjs/method-override) Middleware. Randbemerkung: Nichts hindert Sie daran, PUT zum Löschen zu verwenden, aber es folgt nicht den Standards, d. H. GET zum Abrufen, POST zum Hinzufügen, PUT zum Aktualisieren und DELETE zum Löschen. – Mikey

+0

Entschuldigung. Mein Fehler. Ich wollte die Löschanforderung zum Löschen verwenden. Aber wie ändere ich meinen HTML-Code, um damit zu arbeiten? – mortensen

+0

lesen Sie das: [Sollte PUT und DELETE in Formularen verwendet werden?] (Http://Stackoverflow.com/a/5163030/6567275) Schlussfolgerung: Verwenden Sie AJAX – Thomas

Antwort

1

Sie haben es nicht in die Frage aufgenommen, aber es sieht so aus, als ob Sie Express verwenden. In diesem Fall können Sie verwenden:

var methodOverride = require('method-override') 
app.use(methodOverride('_method')) 

Und dann werden Sie in der Lage sein, HTML-Formulare zu verwenden, wie diese:

<form method="POST" action="/your/resource?_method=DELETE"> 
    <button type="submit">Delete</button> 
</form> 

Und dies in der Route-Handler:

app.route('/') 
    .get(getObjectList) 
    .post(postAddObject) 
    .put(putObject) 
    .delete(deleteObject); 

Wenn Sie verwenden möchten:

<form method="POST"> 
    <input type="hidden" name="_method" value="delete"> 
    <button type="submit">Delete</button> 
</form> 

t enn es ist ein wenig komplizierter, aber immer noch möglich - für weitere Informationen siehe: