原子接口 + 声明编排:我用3分钟组装了一个生产级的业务接口(API)

12 阅读4分钟

这是另一种开发模式的尝试:面向云端Runtime模式。

不是本地写代码然后部署到云端,而是直接在云端声明业务逻辑,平台负责把它跑成API。

怎么做?

把互联网应用里最基础、最通用的能力——用户、支付、订单、计费、消息、推送、物流、认证等等——封装成原子化接口。每个接口都有完整的业务语义,比如“短信验证码登录”、“创建订单”、“微信支付下单”等等。

然后你只需要用JSON描述业务逻辑,把这些原子接口串联起来。平台负责解析、执行、运维,产生的数据与平台无关。

一个例子:60行JSON实现“新用户登录送资源点”(只需要使用5个节点)

{

    "variable": { // 全局变量

        "secret": "00000000000000000000",

        "subResourceId": 1

    },

    "trigger": { // 调用请求工作流接口的定义

        "type": "api",

        "method": "POST",

        "path": "/wf/v1/exec/smsLogin",

        "body": {

            "mobile": "{{request.body.mobile}}",

            "code": "{{request.body.code}}"

        }

    },

"nodes": [ // 业务逻辑实现

    {

        "id": "node_01",

        "type": "HTTP",

        "name": "短信验证码登录",

        "nextNode": "node_02",

        "api": {

            "url": "/uc/v1/jiguang/{唯一标识}/smsLogin",

            "method": "post"

        },

        "body": {

            "mobile": "{{trigger.body.mobile}}",

            "code": "{{trigger.body.code}}"

        }

    },

    {

        "id": "node_02",

        "type": "HTTP",

        "name": "获取用户信息",

        "nextNode": "cond_01",

        "api": {

            "url": "/uc/v1/token/getuserinfo",

            "method": "get"

        },

        "headers": {

            "access-token": "{{node_01.output.body.data.accessToken}}"

        }

    },

    {

        "id": "cond_01",

        "type": "CONDITION",

        "name": "判断是否新用户",

        "expression": "${{{node_01.output.body.data.new}}}",

        "trueNext": "node_03",

        "falseNext": "end1"

    },

    {

        "id": "node_03",

        "type": "HTTP",

        "name": "赠送资源点",

        "nextNode": "end1",

        "api": {

            "url": "/billing/v1/master/recharge",

            "method": "post"

        },

        "authorization": {

            "state": true,

            "secret": "{{variable.secret}}"

        },

        "body": {

            "unionId": "{{node_02.output.body.data.uid}}",

            "subResourceId": "{{variable.subResourceId}}",

            "payAmount": 0

        }

    },

    {

        "id": "end1",

        "type": "END",

        "output": {

            "token": "{{node_01.output.body.data}}",

            "userInfo": "{{node_02.output.body.data}}"

        }

    }

]

}

这段JSON(工作流)都做了什么?

  1. 定义了一个POST接口,接收mobile和code
  2. 调用短信登录接口(平台内置)
  3. 用登录返回的token获取用户信息
  4. 判断是否新用户(登录接口返回了new字段)
  5. 如果是新用户,调用充值接口送资源点
  6. 返回token和用户信息 发布后得到什么?

一个HTTP端点:https://your-domain/wf/v1/exec/smsLogin (平台为每个项目分配了一个域名)

可以直接给前端调用。不需要写代码、不需要部署、不需要运维。

这就是完整的实现过程,此时,你已经拥有了一个生成级的“新用户登录送资源点”API接口。

两种模式的对比:

传统模式AI生成代码模式面向云端开发模式
代码编写手动写AI生成JSON声明
调试环境本地搭建本地搭建云端实时
测试自己写自己写/AI写平台保障
部署手动/CI手动/CI一键发布
运维自己负责自己负责平台负责
通用能力自己实现自己实现/AI生成原子接口开箱即用

AI生成代码提高了“写代码”的效率,但没有改变开发模式本身。你还是在本地写代码、调试、部署,只是写的那部分被AI替代了。

面向云端开发改变的是模式本身:不把代码拉到本地,直接在云端声明业务逻辑;不关心运行环境,只关心业务本身。

为什么是Runtime模式:

Runtime平台面向开发者,提供完整的编程模型(HTTP、变量、条件分支、结束、错误处理),同时把基础设施(审计日志、域名管理、SSL免费证书和自动延期、IP白名单)都封装好。开发者声明逻辑,平台负责运行。

现在能做什么?(上线的原子接口):

  • 用户中心:微信登录、短信登录、获取用户信息、修改用户信息、登出、注销、URL访问权限校验等
  • 计费中心:预计费、扣费、充值、查询余额、查询流水、资源包管理、计费规则、扣费规则等
  • 订单中心:创建订单、查询订单、更新订单状态、取消订单、订单审批、退单申请等
  • 支付中心:微信支付下单、退款申请、关闭订单、查询支付结果、支付/退款回调处理等

体验:

即调官网地址:www.jidiao.fun

写在最后

我们做即调,是因为相信:开发模式的下一次演进,不是更好的代码生成,而是重新思考“开发”本身。

AI生成代码固然大大提高了开发效率,但开发的目的是让其呈现出想要的结果。那么面向云端Runtime模式,未必不是一条演进路径。

欢迎来试,欢迎给反馈。