2016-10-27 5 views
0

는 Retrofit2.0REST API와 CURL

를 사용하여의 Bitbucket의 API와 통신하기 위해 REST 클라이언트를 쓰고 있어요 내가 서버 API와 통신 생각했다

는 다음과 같은 형태로 요청을 보내는 의미

@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에 요청할 수 있도록 도와줍니다.

내 질문은 :

  • 컬과 서로 연결 나머지는 어떻게?
  • Rest 클라이언트 응용 프로그램에서 cURL을 어떻게 사용하고 구현합니까?
  • Bitbucket에서 제공하는 설명서를 사용하여 서버에서 새 저장소를 만들도록 요청하는 올바른 방법은 무엇입니까?
+0

cURL을 사용하여 REST 호출을 수행 할 수 있습니다. 클라이언트에 cURL을 구현할 필요가 없습니다. cURL 요청을 클라이언트 프레임 워크로 변환해야합니다. –

+0

감사합니다. cURL을 클라이언트로 구현하거나 cURL 요청을 클라이언트 프레임 워크로 변환하는 방법에 대해 좀 더 구체적으로 설명 할 수 있습니까? 그렇다면 실제로 코드에서 cURL을 사용하게 될 것입니까? Retrofit2.0으로 어떻게 할 수 있습니까? –

답변

1

cURL은 REST가 아닙니다. 하나는 도구이고, 다른 하나는 소프트웨어 아키텍처 스타일입니다. 명령 행에서 cURL을 사용하여 REST 호출을 수행 할 수 있지만 사용 가능한 도구가 있으므로 클라이언트 응용 프로그램에이를 구현할 필요가 없습니다. 개조 (실제로는 OkHttp)가 하나의 예입니다.

우선, curl -X POST? 즉, 코드에있는대로 @GET이 아니라 POST 요청이 필요합니다.

두 번째로 제공된 링크는 contributors을 API의 끝점으로 나열하지 않습니다.

계속 진행하려면 POST에이 객체를 나타낼 수있는 JSON 객체가 필요합니다.

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

Gson을 사용하여이 데이터를 나타내는 Java 객체를 만들 수 있습니다. 뭔가. 그 기본 URL에 추가 될 필요로

class Repo { 
    String scm; 
    Project project; 
} 

class Project { 
    String key; 
} 

그런 다음 나는 주석 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 Object를 생성하는 방법에 대한 튜토리얼 또는 쇼 - 메 - 웨이 링크를 제공 할 수 있습니까? –

+1

링크 및 튜토리얼은 StackOverflow의 주제와 관련이 없습니다. 귀하의 키워드는 이미 언급되었습니다. 자바 객체와 Gson. 나는 그 정보를 당신 자신의 것으로 발견 할 수있는 능력을 믿는다. –

+0

당신의 대답은 매우 도움이되었습니다. 다시 한번 감사드립니다 –

관련 문제