MassCMS With APIJSON最佳实践

简介: APIJSON是一种基于JSON格式的API接口开发框架。它的目标是简化后端开发人员编写和维护接口的工作,同时提供灵活、高效、安全的接口访问方式。APIJSON通过解析请求的JSON参数,动态生成SQL语句,并自动执行数据库操作,将结果以JSON形式返回给客户端。

1.APIJSON是什么?

APIJSON是一种基于JSON格式的API接口开发框架。它的目标是简化后端开发人员编写和维护接口的工作,同时提供灵活、高效、安全的接口访问方式。APIJSON通过解析请求的JSON参数,动态生成SQL语句,并自动执行数据库操作,将结果以JSON形式返回给客户端。它支持多种复杂查询和操作,如分页、条件查询、关联查询、嵌套查询等。APIJSON还提供了权限控制、数据过滤、数据校验等功能,保护数据安全和一致性。通过APIJSON,开发人员可以快速构建稳定、高效的API接口,提升开发效率和代码质量。

APIJSON是一个开源的接口开发框架(https://github.com/Tencent/APIJSON),它基于Java语言开发,旨在简化后端接口的开发和维护工作。该框架通过将数据库表结构映射为接口的形式,实现了前后端分离以及接口自动化的目标。能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。

2.APIJSON的主要特点和优势

  1. 简单易用:APIJSON使用JSON格式进行接口请求和响应,易于理解和使用。开发人员只需编写简单的JSON参数,即可自动生成对应的SQL语句并执行数据库操作,大大简化了后端接口开发工作。开发者只需要在接口文档中定义好接口,APIJSON就能自动生成对应的接口实现,大大减少了开发的工作量和时间。
  2. 高效灵活:APIJSON支持多种复杂查询和操作,如分页、条件查询、关联查询、嵌套查询等,能满足各种业务需求。它能自动优化SQL语句,提高查询效率,减少数据库负载。APIJSON支持灵活的数据查询和筛选,可以根据业务需求自由组合查询条件,实现复杂的数据过滤和排序。
  3. 数据库无关性:APIJSON支持多种数据库类型,包括MySQL、Oracle、SQL Server等,开发人员可以根据项目需求选择适合的数据库类型。
  4. 安全可靠:APIJSON提供权限控制和数据过滤功能,可以对接口进行访问权限控制,保护数据安全。同时,APIJSON提供数据校验功能,确保数据的一致性和完整性。
  5. 高性能:APIJSON采用了多级缓存机制,可以大大提高接口访问的性能,同时还支持分页查询、条件查询等功能,进一步提升了系统的性能。
  6. 社区活跃:APIJSON是一个有影响力的开源项目(GitHub 15.6K Star ),拥有活跃的社区和开发者群体,并且优先提供企业用户支持,还提供了丰富的文档和示例代码,开发人员可以快速上手和解决问题。
    APIJSON VS GraphQL

GraphQL是一种用于API开发的查询语言和运行时环境。它由Facebook于2015年开发并开源,旨在解决传统RESTful API的一些问题。与传统的RESTful API不同,GraphQL允许客户端精确地描述其需要的数据。客户端可以发送一个GraphQL查询,指定需要的字段和相关的数据关系,而服务器将返回与查询相匹配的精确数据。

3.APIJSON VS GraphQL
GraphQL是一种用于API开发的查询语言和运行时环境。它由Facebook于2015年开发并开源,旨在解决传统RESTful API的一些问题。与传统的RESTful API不同,GraphQL允许客户端精确地描述其需要的数据。客户端可以发送一个GraphQL查询,指定需要的字段和相关的数据关系,而服务器将返回与查询相匹配的精确数据。
截屏2025-05-15 下午3.46.14.png
相比之下,APIJSON有其独特的优点。
截屏2025-05-15 下午3.46.23.png

4.为什么选择APIJSON作为MassCMS的推荐方式

  1. 强大的数据查询功能
    APIJSON支持复杂的数据查询,包括多表关联查询、条件筛选、排序、分页等功能。开发者可以通过简洁的语法实现复杂的查询需求。
  2. 灵活的权限控制
    APIJSON提供了灵活的权限控制机制,开发者可以针对不同的用户角色设置不同的数据访问权限。这使得开发人员可以轻松地实现接口的权限控制,确保数据的安全性。
  3. 快速的接口开发
    APIJSON基于注解的方式,简化了接口的开发过程。开发者只需要在实体类上添加相应的注解,即可自动生成接口的增删改查功能,大大减少了开发工作量。
  4. 易于扩展和定制化
    APIJSON支持自定义注解以及扩展功能,开发者可以根据自己的需求进行定制化开发。同时,APIJSON还提供了丰富的插件机制,方便开发者进行二次开发和扩展。
  5. 高性能和高并发
    APIJSON采用了基于HTTP协议的JSON交互方式,相比传统的接口开发方式,具有更高的性能和更好的并发能力。在大数据量和高并发的场景下,APIJSON能够更好地满足需求。
    如何使用MassCMS创建内容API
  6. 创建项目
    MassCMS不仅可以创建空白项目,还可以根据模版创建项目,而且可以在一个账户体系上创建多个项目,具备同时管理多个项目的能力。
  7. 创建内容模型:
    使用 MassCMS 的管理界面,你可以创建不同的内容模型。例如,你可以创建文章、产品、页面等不同类型的内容,并为每个类型定义所需的字段。
    为每个内容类型定义字段,并选择适当的字段类型,如文本、日期、图像等。你还可以设置关系字段,以关联不同类型的内容,如将产品与文章进行关联。
  8. 创建和管理内容
    使用 MassCMS 的管理界面,你可以创建和管理内容实例。通过选择合适的内容类型和填写字段值,你可以创建新的内容实例,并设置其属性。你可以随时更新和编辑内容,以满足业务需求。
  9. 生成内容API
    创建完模型马上就会自动生成内容API,你可以通过API或其他方式将数据与MassCMS系统进行集成,实现数据的实时同步和更新。

5.客户端使用APIJSON进行内容API查询

  1. masscms 支持 APIJSON,Restfui,GraphQL 三种接口调用方式。接口调用需要鉴权,使用 AES 加密,示例代码如下,具体参考示例代码中/utils/auth.js 文件中详细代码.

    export function getCallsSide() {
     let callsside = JSON.stringify({
         openApiStatus: true,
         projectAppId: "P88666",
         timestamp: Date.now(),
     });
     return Encrypt(callsside);
    }
    function Encrypt(word) {
     let srcs = CryptoJS.enc.Utf8.parse(word);
     let encrypted = CryptoJS.AES.encrypt(srcs, key, {
         iv: iv,
         mode: CryptoJS.mode.CBC,
         padding: CryptoJS.pad.Pkcs7,
     });
     return encrypted.ciphertext.toString().toUpperCase();
    }
    
  2. 接口调用支持三种方式,更推荐使用 APIJSON 方式调用。APIJSON 和 Restfui 调用和 HTTP 接口调用方式一样,可集成 axios 或使用原生 fetch 方法调用,示例代码如下:
    APIJOSN:

    let data = { "[]": { P88666_moment: {} } };
       fetch("https://saas.masscms.com/cms-api/cms/api/get", {
         method: "POST",
         headers: {
           "CALLS-SIDE": getCallsSide(),
           "API-TOKEN": getApiToken(),
         },
         body: JSON.stringify(data),
       })
         .then((data) => {
           return data.json();
         })
         .then((res) => {
           console.log(res);
           this.moments = res["[]"];
         });
    
  3. 使用不同的客户端语言进行查询Demo。
    vuejs:https://gitee.com/masscms/masscms_client/tree/master/with-vuejs
    nextjs:https://gitee.com/masscms/masscms_client/tree/master/with-nextjs
    reactjs:https://gitee.com/masscms/masscms_client/tree/master/with-reactjs
    nuxtjs:https://gitee.com/masscms/masscms_client/tree/master/with-nuxtjs
    miniprogram:https://gitee.com/masscms/masscms_client/tree/master/with-miniprogram

  4. 使用MassCMS产品的接口调试工具APIs进行不同接口类型调试,并且自动生成API文档。
    94e0cdbb-dc27-4f0f-a258-4219142ea7f4.png

6.总结

我们已经在众多项目中得到实践,根据我们的切身的使用体会,APIJSON是一款功能强大、易用性高的后端接口框架。它简化了前后端的数据交互过程,提供了丰富的查询能力和安全的数据访问方式,同时还具备高性能的数据返回能力。在实际项目中使用APIJSON,我们的开发效率得到了极大的提升,同时也提升了系统的性能和安全性。

目录
相关文章
|
域名解析 网络协议 缓存
|
7月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS收费价格:最新MySQL、SQL Server、PostgreSQL和MariaDB收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL和MariaDB,多种引擎任选。基础版优惠价低至88元/年,如MySQL倚天版1核2G仅需88元,SQL Server 2核4G 299元/年,PostgreSQL 2核4G 227元/年,高性价比,弹性可扩展,安全稳定,详情可查官方活动页面。
1171 1
|
12月前
|
监控 数据可视化 API
低代码平台对接API:无需编程快速搭建电商数据中台
低代码平台助力电商企业快速搭建数据中台,通过可视化操作整合京东、淘宝等多平台API,实现库存监控、价格对比、订单分析等功能,降低技术门槛,提升运营效率。
|
算法 安全 物联网
关于SM2、SM3、SM4、SM9这四种国密算法
本文介绍了四种国密算法——SM2、SM3、SM4和SM9。SM2是一种基于椭圆曲线的非对称加密算法,用于数据加密和数字签名;SM3是哈希算法,用于数字签名和消息完整性验证;SM4是对称加密算法,用于数据加密和解密;SM9是基于标识的非对称密码算法,适用于物联网环境中的数据安全和隐私保护。
11641 121
|
8月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
56507 11
|
9月前
|
NoSQL IDE MongoDB
Studio 3T 2025.18 发布 - MongoDB 的终极 GUI、IDE 和 客户端
Studio 3T 2025.18 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端
550 0
Studio 3T 2025.18 发布 - MongoDB 的终极 GUI、IDE 和 客户端
|
12月前
|
运维 Kubernetes Devops
2025年10款主流开源自动化部署工具介绍
随着企业数字化转型加速,DevOps理念普及,自动化部署工具成为提升软件交付效率的关键。本文盘点2025年最具代表性的10款开源部署工具,涵盖从中小企业到大型企业的多样化需求,助力技术团队精准选型,打造高效、稳定的持续交付体系。
2922 0
|
SQL 数据可视化 关系型数据库
开源低代码平台推荐!10款优秀的开源低代码平台!
本文介绍了10款免费开源低代码开发平台,涵盖JeeLowCode、Ample、WaveMaker等,它们通过减少代码编写量、提供高效开发工具和灵活的定制选项,帮助企业快速构建复杂应用,加速数字化转型。各平台特点鲜明,如JeeLowCode支持微服务架构,Ample适合企业级应用,WaveMaker则适用于快速原型开发。文章详细对比了这些平台的核心功能、适用场景及推荐指数,为开发者选择合适的开发工具提供了全面指南。
|
Linux API 开发者
​geth命令参数详解 1.10.4​
​geth命令参数详解 1.10.4​
497 0
|
存储 弹性计算 运维
快速部署 K3s 社区版
K3s 是轻量级的 Kubernetes。K3s 易于安装,仅需要 Kubernetes 内存的一半,所有组件都在一个小于 100 MB 的二进制文件中。K3s 是一个完全兼容的 Kubernetes 发行版。本文向您介绍如何通过计算巢快速部署K3s社区版。
快速部署 K3s 社区版