前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MassCMS With APIJSON最佳实践

MassCMS With APIJSON最佳实践

原创
作者头像
KATSU
发布2023-09-12 17:00:13
4210
发布2023-09-12 17:00:13
举报
文章被收录于专栏:内容管理系统内容管理系统

APIJSON是什么?

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

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

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查询,指定需要的字段和相关的数据关系,而服务器将返回与查询相匹配的精确数据。

APIJSON

GraphQL

查询语言和语法

查询语法类似于JSON,使用HTTP请求进行查询。可以通过POST请求将查询条件以JSON格式发送到服务器,并返回符合条件的数据。APIJSON支持查询、过滤、排序、分页等操作,使用简单直观。

使用自定义的查询语言,使用HTTP或WebSocket进行查询。客户端可以发送一个查询请求,服务器会根据请求返回与查询匹配的数据。允许客户端定义所需的数据结构,并进行高级查询、数据关联和过滤。

数据获取和关联

允许在单个请求中获取多个资源,并支持关联查询。通过在查询中指定关联的字段,可以在一个请求中获取相关联的数据,减少了客户端与服务器之间的往返次数。

允许客户端精确指定所需的数据,在单个请求中获取多个资源和关联的数据。使用字段选择集来指定要返回的字段,可以避免不必要的数据传输,提高了网络效率。

数据关系和嵌套

支持在请求中使用嵌套的JSON结构来获取多层次的数据关系。

使用查询语言来定义所需的数据结构,可以精确地指定所需的字段和关系。

数据过滤和排序

支持在请求中使用特定的JSON结构来过滤和排序数据。

使用查询语言来指定所需的数据,可以直接在查询语句中进行过滤和排序。

安全性

APIJSON支持数据权限控制和访问控制,可以对返回的数据进行过滤和限制。

GraphQL可以通过定义查询和变更类型来精确控制数据的访问和修改权限。

性能和缓存

通过缓存响应来提高性能,并提供了一些性能优化选项。

在一次请求中可以获取多个数据源的数据,但这可能导致性能问题。可以通过缓存或批量查询来改善性能。

生态系统和扩展

提供了一些基本的功能,并且可以通过扩展来满足特定的需求。

有一个庞大的生态系统,并且有很多开源工具和库可用。

相比之下,APIJSON有其独特的优点。

APIJSON

GraphQL

语法简洁

APIJSON的语法相对较为简洁,通过使用JSON来定义API的请求和响应结构,使得API的定义更加直观和易于理解。

GraphQL使用一种类似于查询语言的方式来请求数据,语法略复杂一些。

灵活性

APIJSON具有较高的灵活性,可以根据前端的需求灵活地定制返回的数据结构,避免了传统的过度或不足的数据传递问题。

GraphQL具备一定的灵活性,但是对于返回的数据结构的定制性稍逊一筹。

安全性

APIJSON通过自动化的数据权限控制机制,可以根据用户的角色和权限来限制接口的访问。

GraphQL可以通过限制查询能力和使用权限认证来提供安全性,但需要手动实现和配置。

性能

APIJSON在性能方面表现出色,其底层基于JSON和HTTP协议,能够有效地利用缓存、压缩和并行请求等技术来提升性能。

GraphQL在处理大量数据时可能存在性能瓶颈,因为它通过单一请求来获取多个数据源的数据,可能导致数据获取过程变得复杂。

兼容性

APIJSON对于现有的RESTful API和数据库具有较好的兼容性,可以无缝对接已有的API和数据库。

GraphQL需要在后端进行相应的实现,对于现有的RESTful API和数据库的兼容性相对较差。

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

  1. 强大的数据查询功能

APIJSON支持复杂的数据查询,包括多表关联查询、条件筛选、排序、分页等功能。开发者可以通过简洁的语法实现复杂的查询需求。

2. 灵活的权限控制

APIJSON提供了灵活的权限控制机制,开发者可以针对不同的用户角色设置不同的数据访问权限。这使得开发人员可以轻松地实现接口的权限控制,确保数据的安全性。

3. 快速的接口开发

APIJSON基于注解的方式,简化了接口的开发过程。开发者只需要在实体类上添加相应的注解,即可自动生成接口的增删改查功能,大大减少了开发工作量。

4. 易于扩展和定制化

APIJSON支持自定义注解以及扩展功能,开发者可以根据自己的需求进行定制化开发。同时,APIJSON还提供了丰富的插件机制,方便开发者进行二次开发和扩展。

5. 高性能和高并发

APIJSON采用了基于HTTP协议的JSON交互方式,相比传统的接口开发方式,具有更高的性能和更好的并发能力。在大数据量和高并发的场景下,APIJSON能够更好地满足需求。

如何使用MassCMS创建内容API

1. 创建项目

MassCMS不仅可以创建空白项目,还可以根据模版创建项目,而且可以在一个账户体系上创建多个项目,具备同时管理多个项目的能力。

2. 创建内容模型:

使用 MassCMS 的管理界面,你可以创建不同的内容模型。例如,你可以创建文章、产品、页面等不同类型的内容,并为每个类型定义所需的字段。

为每个内容类型定义字段,并选择适当的字段类型,如文本、日期、图像等。你还可以设置关系字段,以关联不同类型的内容,如将产品与文章进行关联。

3. 创建和管理内容

使用 MassCMS 的管理界面,你可以创建和管理内容实例。通过选择合适的内容类型和填写字段值,你可以创建新的内容实例,并设置其属性。你可以随时更新和编辑内容,以满足业务需求。

4. 生成内容API

创建完模型马上就会自动生成内容API,你可以通过API或其他方式将数据与MassCMS系统进行集成,实现数据的实时同步和更新。

MassCMS
MassCMS

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

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

代码语言:javascript
复制
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 方法调用,示例代码如下:

代码语言:javascript
复制
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文档。

APIs
APIs

总结

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • APIJSON是什么?
  • APIJSON的主要特点和优势
  • APIJSON VS GraphQL
  • 为什么选择APIJSON作为MassCMS的推荐方式
  • 如何使用MassCMS创建内容API
  • 客户端使用APIJSON进行内容API查询
  • 总结
相关产品与服务
Serverless HTTP 服务
Serverless HTTP 服务基于腾讯云 API 网关 和 Web Cloud Function(以下简称“Web Function”)建站云函数(云函数的一种类型)的产品能力,可以支持各种类型的 HTTP 服务开发,实现了 Serverless 与 Web 服务最优雅的结合。用户可以快速构建 Web 原生框架,把本地的 Express、Koa、Nextjs、Nuxtjs 等框架项目快速迁移到云端,同时也支持 Wordpress、Discuz Q 等现有应用模版一键快速创建。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档