回到目录
Lesson 1: Hello World
先来看两个概念 Manager Bean和 checkAccess
Manager Bean
每个模型对象,在系统中都会生成对应的若干java类,其中最重要的是 manager bean。命名规则是 “<模型名字>ManagerImpl”,在项目的配置文件中注册的bean ID为 “<模型名字>Manager”。
这个bean的名字是REST接口中的一部分,后面会详细介绍,这里了解一下就可以了。
checkAccess
每个manager bean都会实现一个 checkAccess 方法,用于校验调用方是否有合适的权限。默认每个请求都需要具备某个合法的“APP”的身份。后面会详细介绍,这里只需知道每一个REST调用,需要首先通过checkAccess的校验。
添加sayHello接口
前面说过REST接口中需要一个 manager bean。
以 daas-start-kit 自带的模型定义文件 bank.xml 为例,我们这次选择 ‘platform’作为我们的 hello world 接口的承载者。
它对应的manager类文件就是:
PlatformManagerImpl.java
找到这个文件,在最后追加一个函数:
public String sayHello(BankUserContext userContext)
throws Exception{
return "hello world";
}
注意:函数的第一个参数“BankUserContext userContext”。
这个是所有接口的第一个参数。命名规范是 xxxUserContext. (XXX 表示您的项目名称)
也可以在项目中扩展它,后面的例子中会演示如何使用和扩展userContext。
编译运行
如 daas-start-kit 文档所述,在项目目录下执行 "gradle bootRun"
调用sayHello接口
首先我们要确定REST接口的正确URL。 URL的格式为:
http(s)://<host:port>/<context>/<manager bean>/<method><param 1>/<param 2>/..../<param n>/
注意最后结尾的“/”,这个/是必须的,任何时候不要忘记所有URL都是以/结尾,不能省略
假设:
- 我们直接在本地,用daas-start-kit 运行了一个应用,
URL=http://localhost:8080/...
- 我们使用的模型是 bank,以其作为context
URL=http://localhost:8080/bank/...
- 我们选择 platform 来处理请求
URL=http://localhost:8080/bank/platformManager/...
- 我们要调用 sayHello 方法
URL=http://localhost:8080/bank/platformManager/sayHello/...
- 我们没有其他的参数
URL=http://localhost:8080/bank/platformManager/sayHello/
所以最终的URL是 http://localhost:8080/bank/platformManager/sayHello/
简单的使用curl来访问它:
目前应该会得到一个错误提示:
{"class":"com.demo.bank.LoginForm","errorMessage":"没有选择App","usernameParmeter":null,"passwordParmeter":null}
例如我的显示如下图:

实现自己的访问控制
还是在 PlatformManagerImpl.java 文件中,重载checkAccess方法。 假设我们不对sayHello做权限检查,允许任何人都可以调用它,代码如下:
@Override
public Object checkAccess(BaseUserContext baseUserContext, String methodName,
Object[] parameters) throws IllegalAccessException {
if ("sayHello".equals(methodName)) {
return accessOK();
}
return super.checkAccess(baseUserContext, methodName, parameters);
}
调用!成功!
再次编译运行: gradle bootRun
再次调用:curl http://localhost:8080/bank/platformManager/sayHello/
得到结果:"hello world" (这是一个JSON字符串,注意包围它的双引号)
我使用postman调用的结果截图如下:

目前为止,你就实现了自己的方法,并且知道了如何去访问它,并已JSON的格式得到结果。
下一步
本节内容仅用来说明“方法-调用-结果”的关系。实际项目中,这样做是不合适的,主要原因是类似‘PlatformManagerImpl.java’这样的代码,是会在每次生成代码时被覆盖的。应该在自己的定制类里实现定制代码;
下一步我们来了解,如何扩展manager bean来实现项目的定制化代码。