Ich habe eine Menge Fragen gestellt, die in letzter Zeit mit der Erstellung von RESTful-Diensten mit PHP zusammenhängen. Meine Frage ist dies: Können alle Dienste (GET, POST, PUT, DELETE) von einem einzigen Web-Formular mit Radio-Buttons getan werden?
Dies ist, was ich in meinem Kopf bin picturing:PHP Rest Service mit einem HTML-Formular?
<form action="MyService.php" method="GET">
<label for="username">Username</label>
<input type="text" name="username" id="username" /><br />
<label for="password">Password</label>
<input type="password" name="password" id="password" /><br />
<label for="id">Task ID</label>
<input type="text" name="id" id="id"/><br />
<label for="desc">Task Description</label>
<input type="text" name="desc" id="desc"/><br />
<label>
<input type="radio" name="service" value="getRadio" checked/> GET
</label>
<label>
<input type="radio" name="service" value="postRadio" /> POST<br />
</label>
<input type="hidden" name="REQUEST_METHOD" value="GET"/><br />
<input type="hidden" name="REQUEST_METHOD" value="POST"/><br />
<input type="hidden" name="REQUEST_METHOD" value="PUT"/><br />
<input type="hidden" name="REQUEST_METHOD" value="DELETE"/><br />
<input type="submit" name="submit" value="ACTION"/>
</form>
Es ist unvollständig, so weit, aber was ich bin zu versuchen, das Denken zu tun, für jeden Dienst Optionsfeld Auswahl hat, dann meine PHP-Datei umreißen wie folgt:
$request = $_SERVER["REQUEST_METHOD"]
switch($request) {
case 'GET':
// logic for GET based on radio button selected
break;
case 'POST':
// logic for POST based on radio button selected
break;
// and then PUT and DELETE
}
Ist das machbar? Wenn ja, bin ich auf dem richtigen Weg oder muss ich Änderungen vornehmen?
Leider nur, HTML-Formulare GET und POST unterstützen. http://stackoverflow.com/questions/165779/are-the-put-delete-head-etc-methods-available-in-fast-web-browsers. Andernfalls müssen Sie AJAX verwenden, um andere Methoden zu verwenden. –
gibt es Hinweise dafür in der Arbeitsgruppe https://www.w3.org/TR/form-http-extensions/#http-delete-form –
Ich würde die Formulare abwerfen (sie trotzdem einreichen) und serialize und ajax verwenden um die Einreichung zu machen. https://api.jquery.com/serialize/ – ArtisticPhoenix