2012-04-25 6 views
2

私はRESTメソッドについて理解しようとしています。私はREST技術に関するGoogleカンファレンスからいくつかのビデオを見ましたが、私が見たものは、アプリケーションがデータベースとの接続を実装していることでした。だから私のコードがRESTとして数えられるかどうかを知りたい。RESTとしてカウントされますか?

PHPコード:

<?php 
mysql_connect("localhost","*****","********"); 
mysql_select_db("********"); 
$cname = mysql_real_escape_string($_REQUEST['cname']); 
$q=mysql_query("SELECT mdl_course_sections.summary FROM mdl_course, mdl_course_sections WHERE mdl_course.id = mdl_course_sections.course AND mdl_course.fullname = '$cname' AND mdl_course_sections.section > 0"); 
while($e=mysql_fetch_assoc($q)) 
    $output[]=$e; 
print(json_encode($output)); 
mysql_close(); 
?> 

JAVAコード:

public class CourseSegmentsActivity extends ListActivity{ 

String courseName = null; 
String segmentName = null; 

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 

    Intent i = getIntent(); 
    courseName = i.getStringExtra("courseName"); 

    ArrayList<HashMap<String,String>> myCoursesList = new ArrayList<HashMap<String,String>>(); 
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("cname",""+courseName)); 

    InputStream is = null; 
    String result = null; 
    try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("****************"); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
    }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection "+e.toString()); 
    } 
    try{ 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-10"),8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
        sb.append(line + "\n"); 
      } 
      is.close(); 

      result=sb.toString(); 
    }catch(Exception e){ 
      Log.e("log_tag", "Error converting result "+e.toString()); 
    } 

try{ 
    JSONArray jArray = new JSONArray(result); 
    for(int ii=0;ii<jArray.length();ii++){ 
      JSONObject json_data = jArray.getJSONObject(ii); 
      segmentName = json_data.getString("summary"); 

      HashMap<String,String> map = new HashMap<String, String>(); 
      map.put("summary", segmentName); 
      myCoursesList.add(map); 
    } 
} catch(JSONException e){ 
    Log.e("log_tag", "Error parsing data "+e.toString()); 
} 
ListAdapter adapter = new SimpleAdapter(this, myCoursesList,R.layout.course_segments_list_layout, 
     new String[] {"summary"}, new int[] { R.id.name}); 

setListAdapter(adapter); 


} 
} 

私が行方不明ですものではありませんか?

答えて

2

を見てください。 REST標準に従えば、httpプロトコルを効率的に使用する必要があります。 RESTの標準あたりとして、

あなたがデータを読んでいる場合 - あなたは、メタデータを読んでいる場合はGET
を使用する - あなたはデータを作成している場合はHEAD
を使用する - あなたがデータを変更している場合、POST を使用 - 使用があれば をPUTあなたは削除しています - 使用DELETE、

詳細については、httpプロトコル(RFC2616)のw3c仕様を参照してください。

+0

JSONを返すphpscriptに値を送信しています。ところで、httpプロトコルを効率的に使うことはどういう意味ですか?何か不足していますか? – LTnewbie

+1

私はHTTPプロトコルを効率的に使用することは、一般的に人々がHTTP GETとPOSTだけを使用してほとんどの時間を要求し、getとpostメソッドですべてのビジネスロジックを実行することです。 httpはPUTやDELETEのような他の種類の要求もサポートしていますが、これらは無視されます。 RESTの背後にある主要なアイデアは、すべてのタイプのHTTPリクエストを使用することです。そのロジックをPOSTに入れるのではなく、データベースからレコードを削除する場合は、操作を行う特定のURLにHTTP DELETE要求を送信するだけです。 –

+0

私はいくつかの意味を作ったことを願っています:) –

1

いいえ、POSTを使用してデータを取得しています。ただし、POSTはの既存のデータを編集するために使用されます。 RESTを使用した場合 クエリ文字列も、むしろそうです - 通常、あなたは資源

を指定するURLを使用しません、あなたがされていないhttp://en.wikipedia.org/wiki/REST#RESTful_web_services

+0

次にGETを使用する必要がありますか? – LTnewbie

+0

はい、それはより適切でしょう。また、RESTで通常使用されるURL構造を見てください。 – ThiefMaster

+0

よろしくお願いいたします。しかし、主な質問が残っています。 POSTをGETに変更すると、RESTに移動しますか? – LTnewbie

関連する問題