APIJSON是一种基于JSON格式的API接口开发框架。它的目标是简化后端开发人员编写和维护接口的工作,同时提供灵活、高效、安全的接口访问方式。APIJSON通过解析请求的JSON参数,动态生成SQL语句,并自动执行数据库操作,将结果以JSON形式返回给客户端。它支持多种复杂查询和操作,如分页、条件查询、关联查询、嵌套查询等。APIJSON还提供了权限控制、数据过滤、数据校验等功能,保护数据安全和一致性。通过APIJSON,开发人员可以快速构建稳定、高效的API接口,提升开发效率和代码质量。
APIJSON是一个开源的接口开发框架(https://github.com/Tencent/APIJSON),它基于Java语言开发,旨在简化后端接口的开发和维护工作。该框架通过将数据库表结构映射为接口的形式,实现了前后端分离以及接口自动化的目标。能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。
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支持复杂的数据查询,包括多表关联查询、条件筛选、排序、分页等功能。开发者可以通过简洁的语法实现复杂的查询需求。
2. 灵活的权限控制
APIJSON提供了灵活的权限控制机制,开发者可以针对不同的用户角色设置不同的数据访问权限。这使得开发人员可以轻松地实现接口的权限控制,确保数据的安全性。
3. 快速的接口开发
APIJSON基于注解的方式,简化了接口的开发过程。开发者只需要在实体类上添加相应的注解,即可自动生成接口的增删改查功能,大大减少了开发工作量。
4. 易于扩展和定制化
APIJSON支持自定义注解以及扩展功能,开发者可以根据自己的需求进行定制化开发。同时,APIJSON还提供了丰富的插件机制,方便开发者进行二次开发和扩展。
5. 高性能和高并发
APIJSON采用了基于HTTP协议的JSON交互方式,相比传统的接口开发方式,具有更高的性能和更好的并发能力。在大数据量和高并发的场景下,APIJSON能够更好地满足需求。
1. 创建项目
MassCMS不仅可以创建空白项目,还可以根据模版创建项目,而且可以在一个账户体系上创建多个项目,具备同时管理多个项目的能力。
2. 创建内容模型:
使用 MassCMS 的管理界面,你可以创建不同的内容模型。例如,你可以创建文章、产品、页面等不同类型的内容,并为每个类型定义所需的字段。
为每个内容类型定义字段,并选择适当的字段类型,如文本、日期、图像等。你还可以设置关系字段,以关联不同类型的内容,如将产品与文章进行关联。
3. 创建和管理内容
使用 MassCMS 的管理界面,你可以创建和管理内容实例。通过选择合适的内容类型和填写字段值,你可以创建新的内容实例,并设置其属性。你可以随时更新和编辑内容,以满足业务需求。
4. 生成内容API
创建完模型马上就会自动生成内容API,你可以通过API或其他方式将数据与MassCMS系统进行集成,实现数据的实时同步和更新。
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文档。
我们已经在众多项目中得到实践,根据我们的切身的使用体会,APIJSON是一款功能强大、易用性高的后端接口框架。它简化了前后端的数据交互过程,提供了丰富的查询能力和安全的数据访问方式,同时还具备高性能的数据返回能力。在实际项目中使用APIJSON,我们的开发效率得到了极大的提升,同时也提升了系统的性能和安全性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。