我对整个Google Cloud Endpoint / Google App Engine世界都很陌生。如果您已经浏览了Google提供的Hello World示例(您可能已经拥有),您可能还记得有两个类是自动为您生成的:MyBean
和MyEndpoint
。
这些是这样的:
/**
* 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的任何信息。
有人能帮我理解吗?
答案 0 :(得分:1)
我认为您的问题可以分为三个部分:
1 /什么是API公开? 基本上,您通过接口(API)提供对业务逻辑的访问,完全控制您想要显示的内容。这个Stack Exchange答案是一个很好的解释:https://softwareengineering.stackexchange.com/questions/203844/what-does-it-mean-to-expose-something
2 /自动生成的端点类中的这些注释是什么? 如果我能这样总结一下,Google端点就是一个“框架”,它根据你的java bean生成“默认”API。默认情况下,您在API中获得CRUD操作,但您可以修改和/或丰富端点以提供更复杂的业务逻辑。生成的Endpoints类包括框架使用的特定注释(特别是在生成相应的servlet时),并定义要调用的URI以与API的方法交互。见https://cloud.google.com/appengine/docs/java/endpoints/
3 /这个gapi.client电话是什么? gapi代表Google API客户端库。它是Google提供的用于从Web浏览器与端点交互的库。见https://developers.google.com/api-client-library/javascript/ 您可以使用其他方法来调用Endpoint API,例如jquery Ajax方法(http://api.jquery.com/jquery.ajax/),因为端点遵循REST架构风格。请注意,您可以从其他“客户”调用您的终端,而不是Web浏览器,例如Android或iOS应用程序。在这些情况下,您不会使用Google API客户端库,而是使用其他一些库。
我希望这有点澄清。不要犹豫,询问更多细节。