图书

  • Web API的设计与开发

    水野贵明   盛荣   译

    本书结合丰富的实例,详细讲解了Web API的设计、开发与运维相关的知识。第1章介绍Web API的概要;第2...

  • 天笑 2推荐

    创建筋斗云Web接口项目

    [任务] 用筋斗云框架创建一个Web接口项目叫mysvc,创建数据库,提供对ApiLog对象的操作接口。 先从github上下载开源的筋斗云后端框架及示例应用:https://github.com/skyshore2001/jdcloud-php 建议安装git工具直接下…...

  • 天笑 推荐

    函数型接口

    函数型接口 如果不是典型的对象增删改查操作,可以设计函数型接口,比如登录、修改密码、上传文件这些。 函数型接口一般实现在文件 php/api_functions.php 中,它被主文件api.php包含。 假设有以下接口定义: 获取登录信息(who am i?) who…...

  • 天笑 推荐

    常用操作 / 获取参数

    函数mparam用来取必传参数(m表示mandatory),参数既可以用URL参数,也可以用POST参数传递。如果是取一个可选参数,可以用param函数。 与直接用php的$_GET等变量相比,param/mparam可指定参数类型,如 // 取id参数,特别地,对id参数会…...

  • 天笑 推荐

    常用操作 / 接口返回

    接口返回 函数应返回符合接口原型中描述的对象,框架会将其转为最终的JSON字符串。 比如登录接口要求返回{id, _isNew}: login(uname, pwd, _app?=user) -> {id, _isNew?} 因而在api_login中,返回结构…...

  • 天笑 推荐

    常用操作 / 数据库操作

    数据库操作 数据库连接一开始是通过tool/init.php在线配置的,或直接手改文件 php/conf.user.php 文件的相关配置如: putenv("P_DB=localhost/jdcloud"); putenv("P_DBCRED…...

  • 天笑 推荐

    对象型接口

    对象型接口 为了更好的理解之后章节的示例,我们先了解一下示例中用到的数据模型。 [数据模型描述方式] 下面是几个数据表,每个表都应有个作为主键的id字段,是可自动增长的整数类型,即使是关联表也应定义id字段作为主键。 用户: @User: id, uname, phon…...

  • 天笑 推荐

    对象型接口 / 定制操作类型和字段

    对象接口通过继承AccessControl类来实现,默认允许5个标准对象操作,可以改写属性$allowedAc来限定允许的操作: class AC_ApiLog extends AccessControl { protected $allowedAc = ["get…...

  • 天笑 推荐

    绑定访问控制类与权限

    绑定访问控制类与权限 前面在讲函数型接口时,提到权限检查用checkAuth函数来实现。 在对象型接口中,通过绑定访问控制类与权限,来实现不同角色通过不同的类来控制。 比如前例中ApiLog对象接口允许员工登录(AUTH_EMP)后访问,只要定义: class AC2_A…...

  • 天笑 推荐

    定制可访问数据

    定制可访问数据 除了限制用户可以访问哪些表和字段,还常会遇到一类需求是限制用户只能访问自己的数据。 [任务] 用户登录后,可以添加订单、查看自己的订单。 我们在设计文档中设计接口如下: 添加订单 Ordr.add()(amount) -> id 查看订单 Ord…...

  • 天笑 推荐

    虚拟字段(一)

    前面已经学习过怎样把一个数据库中的表作为对象暴露出去。 其中,表的字段就可直接映射为对象的属性。对于不在对象主表中定义的字段,统称为虚拟字段。 通过$vcolDefs来定义虚拟字段,最简单的一类虚拟字段是字段别名,比如 class AC1_Ordr extends Acce…...

  • 天笑 推荐

    虚拟字段(二)

    关联字段依赖 假设设计有“订单评价”对象,它与“订单”相关联: @Rating: id, orderId, content 一个订单可有多个评价,表间的关系为: 订单评价Rating(orderId) n<->1 订单Ordr 订单Ordr(userId)…...

  • 天笑 推荐

    虚拟字段(三)

    计算字段 在定义虚拟字段时,"res"也可以是一个计算值,或一个很复杂的子查询。 例如表OrderItem是Ordr对象的一个子表,表示订单中每一项产品的名称、数量、价格: @Ordr: id, userId, status(2), amount, d…...

  • 天笑 推荐

    子表对象

    子表对象 前面提到过想在对象中返回子表时,可以使用压缩成一个字符串的子表字段,一般适合数据比较简单的场合。 另一种方式是用$subobj来定义子表对象。 例如在获取订单时,同时返回订单日志,设计接口如下: Ordr.get() -> {id, ..., @orde…...

  • 天笑 推荐

    虚拟表和视图

    虚拟表和视图 表ApiLog中有一个字段叫app,表示前端应用名: @ApiLog: id, tm, addr, app, userId - userId: 如果app=user,则关联到User表;如果app=emp,则关联到员工表Employee @Employee…...

  • 天笑 推荐

    接口返回前回调

    接口返回前回调 示例:添加订单到Ordr表时,自动添加一条"创建订单"日志到OrderLog表,可以这样实现: class AC1_Ordr extends AccessControl { protected function onValidate() …...

  • 天笑 推荐

    非标准对象接口

    非标准对象接口 对象的增删改查(add/set/get/query/del共5个)接口称为标准接口。 可以为对象增加其它非标准接口,例如取消订单接口: Ordr.cancel(id) 应用逻辑 - 权限: AUTH_USER - 用户只能操作自己的订单 只要在相应的访…...

  • 天笑 推荐

    日志与调试

    日志与调试 输出日志可以用logit函数,将信息输出到后端文件中,默认存在服务目录下的trace.log文件中。 logit("### debug info"); 除直接查看文件外,也可以在浏览器中访问 tool/log.php 页面来查看最近的日志…...

  • 天笑 推荐

    会话管理

    会话管理 筋斗云使用cookie机制来维持与客户端的会话。 它默认使用的cookie名称是"userid",但可以由客户端请求中URL参数_app来修改,比如_app=emp,则使用cookie名称为"empid"。 在筋斗云中,_ap…...

  • 天笑 推荐

    批量请求

    批量请求 筋斗云框架支持批量请求,即在一次请求中,包含多条接口调用。 假设一个前端页面进入时,需要接连调用好多次接口才能完成展现,一般的做法是需要后端重新设计接口来优化。 筋斗云支持batch接口,这时后端不必做任何设计修改,前端只要调用batch接口即可获得优化。 假如…...

  • 天笑 推荐

    概览

    随着移动互联网的快速发展,各行业对手机应用开发需求旺盛。 应用开发一般分为前端和后端,后端关注数据和业务,需要对前端各类应用(如安卓应用、苹果应用、H5应用等)提供基于HTTP协议的交互接口。 筋斗云是一个Web接口开发框架,它不讲MVC,不做对象-数据表映射(OR Mapp…...