2016-04-23 2 views
0

PHPでRESTfulなサービスを作成することに関して、私は遅れて多くの質問をしてきました。私の質問はこれです:
ラジオボタンを使用して、すべてのサービス(GET、POST、PUT、DELETE)を単一のWebフォームから行うことはできますか?
これは私が私の頭の中で描いていますものです:PHPレストサービスは1つのHTMLフォームを使用していますか?

<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> 

それはこれまでのところ、不完全だが、私はがやろうとのを考えていることは、私のPHPファイルの概要を説明し、その後、各サービスのラジオボタンの選択を持っていますこのように:

$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 
} 

これは実行可能ですか?もしそうなら、私は正しい道を歩いているのですか、あるいは私は変更を加える必要がありますか?

+1

残念ながら、HTMLフォームはGETとPOSTをサポートしています。 http://stackoverflow.com/questions/165779/are-the-put-delete-head-etc-methods-available-in-most-web-browsersそれ以外の場合は、AJAXを使用して他のタイプのメソッドを動作させる必要があります。 –

+0

ワーキンググループのメモがhttps://www.w3.org/TR/form-http-extensions/#http-delete-form –

+0

あります。私はフォームを提出し(とにかくそれを提出する)、serializeとajaxを使用します提出を行う。 https://api.jquery.com/serialize/ – ArtisticPhoenix

答えて

0

this specのようにフォームを使用したい場合は、フォームのmethodをいくつかのjavascriptを使用して変更することができます。onsubmit

<form action="MyService.php" method="GET" onsubmit='this.method = this.service.value'> 
 
     <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="GET" checked/> GET 
 
     </label> 
 
     <label> 
 
      <input type="radio" name="service" value="POST" /> POST<br /> 
 
     </label> 
 
     <label> 
 
      <input type="radio" name="service" value="PUT" /> PUT 
 
     </label> 
 
     <label> 
 
      <input type="radio" name="service" value="DELETE" /> DELETE<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>

関連する問題