java - "exposing"API 的本质是什么,特别是在 Google Cloud Endpoint 中?

标签 java google-app-engine annotations google-cloud-endpoints

我对整个 Google Cloud Endpoint/Google App Engine 世界完全陌生。如果您已经看过 Google 提供的 Hello World 示例(您可能已经看过),您可能还记得有 2 个为您自动生成的类:MyBeanMyEndpoint.

这些是这样的:

/**
 * The object model for the data we are sending through endpoints
 */
public class MyBean {

    private String myData;

    public String getData() {
        return myData;
    }

    public void setData(String data) {
        myData = data;
    }
}

并且,

/**
 * An endpoint class we are exposing
 */
@Api(
        name = "myApi",
        version = "v1",
        namespace = @ApiNamespace(
                ownerDomain = "backend.myapplication.DJ.example.com",
                ownerName = "backend.myapplication.DJ.example.com",
                packagePath = ""
        )
)
public class MyEndpoint {

    /**
     * A simple endpoint method that takes a name and says Hi back
     */
    @ApiMethod(name = "sayHi")
    public MyBean sayHi(@Named("name") String name) {
        MyBean response = new MyBean();
        response.setData("Hi, " + name);

        return response;
    }

}

现在,我检查了index.html中的代码(在部署后端时打开)。我在 javascript 中发现了以下调用:

gapi.client.myApi.sayHi({'name': name}).execute(

现在,我可以通过注释看到 myApi 是名称,sayHi() 是相应的方法,我不明白的是公开 API 的概念,而注释对此有所帮助。没有任何有关公开 API 的信息。

谁能帮我理解这一点吗?

最佳答案

我认为你的问题可以分为三个部分:

1/什么是公开 API? 基本上,您可以通过接口(interface)(API)提供对业务逻辑的访问,并完全控制您想要显示或不显示的内容。这个 Stack Exchange 答案是一个很好的解释:https://softwareengineering.stackexchange.com/questions/203844/what-does-it-mean-to-expose-something

2/自动生成的端点类中的这些注释是什么? 如果我可以这样总结的话,Google 端点是一个“框架”,它根据您的 java beans 生成“默认”API。默认情况下,您可以在 API 中获取 CRUD 操作,但您可以修改和/或丰富端点以提供更复杂的业务逻辑。生成的 Endpoints 类包括框架使用的特定注释(特别是在生成相应的 servlet 时),并定义您将调用以与 API 方法交互的 URI。请参阅https://cloud.google.com/appengine/docs/java/endpoints/

3/这个gapi.client 调用是什么? gapi 代表 Google API 客户端库。它是 Google 提供的用于通过网络浏览器与端点交互的库。请参阅https://developers.google.com/api-client-library/javascript/ 您可以使用其他方法来调用 Endpoint API,例如 jquery Ajax 方法 ( http://api.jquery.com/jquery.ajax/ ),因为 Endpoint 遵循 REST 架构风格。请注意,您可以从 Web 浏览器以外的其他“客户端”调用端点,例如Android 或 iOS 应用程序。在这些情况下,您不会使用 Google API 客户端库,而是使用其他一些库。

我希望这能澄清一点。请随时询问更多详细信息。

关于java - "exposing"API 的本质是什么,特别是在 Google Cloud Endpoint 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40266500/

相关文章:

google-app-engine - GAE过滤器实体键(Golang)

python - 字符串值前面的 'u' 符号是什么意思?

java如何在属性中配置注释调度程序fixedDelay

java - Paypal 快速结帐java

java - 如何使用 xml 文件对我的 HtmlUnit 代码进行单元测试

java - 如何使用插件以编程方式获取 eclipse 标签列表

android - App Engine 中运行的是哪种类型的服务器?

java - 仅发布形式的 CAS

java - Hibernate注解(金字塔结构-同表)

iphone - 自动 "canShowCallOut"注释iPhone