前言
在上篇我们了解到,FileMaker Data API 这套遵循 REST 架构风格的接口,使得 FileMaker 解决方案有了除 XML、ODBC 之外的途径与第三方系统整合。
对于还没有去掉 Trial 字样的 FileMaker Data API 来说,我们的要求并没有降低。我们认为这套 API 应该是安全、易用、高效且完善的,接下来的测试就将从这几方面展开。
准备
在开始前,我们需要作以下准备:
- 确保 FileMaker 解决方案已分配了 fmrest 扩展权限;
- 确保 FileMaker Server 已经启用了 Data API 服务;
准备 FileMaker 解决方案
用于测试的 FileMaker 解决方案 filemakerpro16.fmp12 包含用户(Users)和订单(Orders)两个表,各包含一些简单的字段,然后通过用户名建立联系,关系图如下所示。对应的,其布局名称分别是 Users、Orders、
用于测试连接的账户名称及密码分别是 Admin
:admin
,属于“完全访问权限集”,获得了 fmrest 扩展权限。
当然,直接使用“完全访问权限集”比较粗暴,更好的做法是创建专门针对 Data API 的账户,由此可以获得更好的安全性,并能在日志等场景下进行鉴别,便于过滤分析。
设置好表和关系并分配好扩展权限,就可以上传解决方案到 FileMaker Serve 了。
准备 FileMaker Server
我们在虚拟机上部署了 FileMaker Server 16,其 IP 地址是 10.211.55.15。在 FileMaker Server 上确认是否启用了 Data API 非常容易——除非您在安装时没有选择这个选项——在网络发布(Web Publishing)页面的 FileMaker Data API 栏即可看到当前状态:
当然我们还可以在 FileMaker Server 中查看上传的解决方案是否授予了 fmrest 扩展权限:
准备测试工具
另外,我们会使用到新工具 Postman 简化我们的测试,这是一个图形化界面的 API 调试工具,可以在其官网下载各个平台的版本。
与 FileMaker 开发者熟知的大部分 FileMaker 知识点不同,使用 Postman 或访问 FileMaker Data API 都需要具备一定的 REST 知识,这里不做展开介绍。有兴趣的朋友可以通过 Wiki 等途径进行了解学习。
还有一个重要的工具,那就是 FileMaker Data API 文档,我们可以通过 https://[yourserveripaddress]:16000/docs/Data%20API%20Documentation/
路径来访问,文档非常简洁,清晰明了的描述了如何访问该服务。
测试
安全
身份认证是API 安全访问的屏障, FileMaker Data API 提供常规身份认证和 OAuth 认证两种形式。常规认证非常简单,只需传递 user、password 以及 layout 参数即可。
身份认证成功后返回右侧(以及如下)结果:
{
"token": "8a141c16c9f398c92d94ae18da7eb7c3270b571b109e9d446dc4",
"layout": "Users",
"errorCode": "0",
"result": "OK"
}
至此,返回的 token 即可用于其他资源操作。如果使用错误的用户名和密码,那么返回的信息如下:
{
"errorMessage": "Invalid user account and/or password; please try again",
"errorCode": "212"
}
如果希望访问 FileMaker Data API 时使用 OAuth 认证方式,需结 OAuth 2.0 第三方账户登录支持。在 Data API 层面的使用相对简单,分别将 user、password 替换为 oAuthRequestId 和 oAuthIdentifier 并指定 X-FM-DATA-LOGIN-TYPE 头信息为 “oauth” 即可。但是——获取可用的 oAuthRequestId 和 oAuthIdentifier 有些“不简单”——需要 Amazon、Google 或 Microsoft Azure 帐户的支持。
常规认证和 OAuth 认证两种方式加持,常规认证简单高效,OAuth 提供更高安全性满足更复杂的应用场景,FileMaker Data API 拥有足够的安全基础。
当然,整个系统安全性是综合性的,除了 Data API 认证环节外,其他安全措施——FileMaker Server SSL 证书、Data API 访问权限集与其他权限集独立、布局及字段分级配置等——也至关重要。
易用
在 FileMaker Pro Advanced 中使用脚本调试器,可以帮助我们快速排查错误并定位错误,Data API 则通过返回错误代码和错误消息来达到近似的目的。但由于没有可视化界面,错误消息的准确性就非常重要了。
我们尝试了不存在的服务类型,比如把 record 更改为 records,返回信息如下:
针对不存在的布局名称,把 Users 更改为 User,返回信息如下:
{
"errorMessage": "Layout is missing",
"errorCode": "105"
}
如果操作不存在的记录(recordId),返回的信息也非常准确:
{
"errorMessage": "Record is missing",
"errorCode": "101"
}
查询操作时错误的参数名(排序参数 sort 写成 soot),返回信息:
{
"errorMessage": "Query contains invalid parameter:soot",
"errorCode": "960"
}
或者错误的参数值,返回信息:
{
"errorMessage": "Value list is missing",
"errorCode": "108"
}
相对 FileMaker Pro 16 和 15 帮助文档的错误代码说明表,FileMake Data API 给出的错误信息更详细。以 960 号错误为例,帮助文档的描述内容是 Parameter is invalid ,Data API 给出的错误信息是 Query contains invalid parameter:soot。显然,FileMaker Data API 提供了清晰的错误提示,有助于开发者快速找到问题所在进而做出调整。
高效
我们分别测试了创建、编辑密集操作的性能表现。用于测试的虚拟服务器环境如下:
创建操作写入的数据如下:
{
"data":{
"name": "John",
"sex": "M",
"age": "34",
"email": "John@pro.men",
"mobile": "18808000800"
}
}
循环持续写入统计数据如下,时间单位毫秒(ms):
100 次写入 | 1000 次写入 | 2000 次写入 | |
---|---|---|---|
总耗时 | 688 | 5292 | 10794 |
最高单次耗时 | 25 | 125 | 43 |
最低单次耗时 | 4 | 4 | 4 |
平均耗时 | 6.88 | 5.292 | 5.397 |
编辑操作写入的数据如下:
{
"data":{
"name": "Johnny",
"sex": "M",
"age": "35",
"email": "johnny@pro.men",
"mobile": "18800008888"
}
}
循环持续编辑统计数据如下,时间单位毫秒(ms):
100 次编辑 | 1000 次编辑 | |
---|---|---|
总耗时 | 649 | 5711 |
最高单次耗时 | 12 | 116 |
最低单次耗时 | 4 | 4 |
平均耗时 | 6.49 | 5.711 |
限于测试环境和方法的限制,我们暂未做更高密度的测试操作。在有限硬件配置下,能做到平均 6 毫秒左右的耗时(每秒160次完整操作)已经不错。
完备
FileMaker Data API 提供了AUTHENTICATION(认证)、RECORD(记录)、FIND(查找)以及GLOBAL FIELDS(全局字段) 4 类资源 9 个操作:
- AUTHENTICATION
- Login – 登录
- Logout – 注销
- RECORD
- Create Record – 创建记录
- Delete Record – 删除记录
- Edit Record – 编辑记录
- Get Record – 获取记录
- Get Records – 获取记录集
- FIND
- Find Records – 查找记录
- GLOBAL FIELDS
- Set Global Fields – 设置全局字段
单从数量上来讲,FileMaker Data API 提供的资源和操作方法算不上多。但我们逐一试用时,发现在部分资源操作时拥有不少可用参数配合。
以 Get Records 获取记录集为例,可选择如下查询参数:
- offset – 起始位置,指定返回记录开始的位置;
- range – 返回条数,指定返回记录的条数;
- sort – 排序方式,指定返回数据排序的方式;
- portal – 返回入口,指定返回数据入口的入口;
同时,指定返回入口 portal 后还可以针对入口提供 offset、range、sort 可选参数。在查找记录时,查询参数则可以使用多重组合,支持 =, ==, !, <, ≤ or <=, >, ≥ or >=, …, //, ?, @, #, *, \, “”, ~ 等查询方式。组合这些可选参数后,在获取或搜索记录时拥有了非常精细的控制能力。
结语
至此,FileMaker 16的评测系列已经全部完成了。FileMaker Pro 16 在移动化、开发、整合、安全性和扩展性方面带来了诸多变化。除了本文介绍的这些特性外,FileMaker 还有很多 UI 上的细微调整,使得开发效率更为提升。Server 端 OAuth 认证、cURL 选项、REST 及编码系列函数、Data API 新特性的引入,为 FileMaker 平台的整合能力和可扩展性带来了极大的提升。希望通过本系列文章打开大家对 FileMaker Pro 16 认识的一扇门,让我们一起迎接新篇章!