REST API 和 CURL

REST API and CURL

我是 REST 开发的新手,正在编写一个 REST 客户端以使用 Retrofit2.0

与 Bitbucket API 通信

我以为与服务器通信API意味着以下面的形式发送请求

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

我认为 API 文档应该提供有关端点和参数等的必要信息。

但是当我查看 Bitbucket 的 API 时,我得到的只是有关如何使用 cURL 执行某些操作的说明,例如 this instruction - 用于创建新存储库。

就我而言,cURL 是一个 Linux 库,有助于促进从 Linux 终端向 API 发出请求。

我的问题是:

cURL 不是 REST。一个是工具,另一个是软件架构的风格。您可以使用 cURL 从命令行执行 REST 调用,但您不需要在客户端应用程序中实现它,因为可能有可用的工具。 Retrofit(实际上只是 OkHttp)就是一个例子。

首先,看到curl -X POST?这意味着您需要 POST 请求,而不是代码中的 @GET 请求。

其次,您提供的 link 没有将 contributors 列为 API 的端点。

继续,您需要一些 JSON 对象来代表此对象 POST。

{
    "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
);