2016-10-27 12 views
0

私はREST開発に新しいですし、私は、サーバーのAPIと通信すると、次の形式REST APIとCURL

でリクエストを送ることを意味考えRetrofit2.0

を使用してのBitbucketのAPIと通信するRESTクライアントを書いています

@GET("/repos/{owner}/{repo}/contributors") 
    Call<List<Contributor>> contributors(
      @Path("owner") String owner, 
      @Path("repo") String repo 
    ); 

私は、APIドキュメントがエンドポイントやパラメータなどに関する必要な情報を提供する必要があると考えました。

BitbucketのAPIを見てみると、新しいリポジトリの作成にはthis instruction -のように、cURLを使用して何かを行う方法がわかりました。

私の言う限り、cURLはLinuxライブラリであり、Linux端末からAPIへのリクエストを容易にするのに役立ちます。

私の質問は以下のとおりです。

  • のcURLと相互に接続されているRESTどのように?
  • Rest ClientアプリケーションでcURLを使用して実装するにはどうすればよいですか?
  • Bitbucketによって提供されたドキュメントを使用すると、サーバーに新しいリポジトリを作成させる要求を実装する正しい方法がありますか?
+0

cURLを使用してREST呼び出しを実行できます。クライアントにcURLを実装する必要はありません。 cURLリクエストをクライアントフレームワークに変換する必要があります。 –

+0

ありがとうございます。 cURLのクライアントへの実装やcURLリクエストのクライアントフレームワークへの変換について、より具体的に記述できますか?実際に私のコードでcURLを使用するつもりですか? Retrofit2.0でどうすればいいですか? –

答えて

1

cURLはRESTではありません。 1つはツールであり、もう1つはソフトウェアアーキテクチャのスタイルです。コマンドラインからcURLを使用してREST呼び出しを実行できますが、利用可能なツールがある可能性があるため、クライアントアプリケーションに実装する必要はありません。改造(実際にはOkHttp)がその一例です。

まず、を参照してください。これはコードにあるように@GETではなくPOSTリクエストが必要であることを意味します。

第2に、あなたが提供したリンクは、contributorsをAPIのエンドポイントとしてリストしません。

移動すると、このオブジェクトをPOSTに表すことができるJSONオブジェクトが必要です。

{ 
    "scm": "git", 
    "project": { 
     "key": "{ba516952-992a-4c2d-acbd-17d502922f96}" 
    } 
} 

Gsonを使用して、このデータを表すJavaオブジェクトを作成できます。何かのようなもの。

class Repo { 
    String scm; 
    Project project; 
} 

class Project { 
    String key; 
} 

はその後、私は、ベースURLに追加する必要がありますように、注釈のURLから先頭/を削除するお勧めします。

@POST("repos/{owner}/{repo}/contributors") 
Call<List<Contributor>> contributors(
     @Path("owner") String owner, 
     @Path("repo") String repo, 
     @Body Repo data 
); 
+0

ありがとうございます。私はcURLとRESTを区別できませんでした。あなたが言ったようにGsonを使ってデータを表現するためのJavaオブジェクトを作成する方法についてのチュートリアルやショーミー・ミー・リンクを教えてください。 –

+1

リンクとチュートリアルは、StackOverflowのトピックではありません。あなたのキーワードは既に言われました。 JavaオブジェクトとGson。私は自分自身でその情報を見つけるあなたの能力を信じます –

+0

あなたの答えは非常に有用でした。もう一度ありがとう –