APIJSON的使用
APIJSON是一个用于简化后端接口开发的工具,在Java中可以按照以下步骤使用:
1. 引入依赖
在Java项目中,需要引入APIJSON的相关依赖。如果使用Maven,可以在pom.xml文件中添加以下依赖:
<dependency><groupId>com.github.TommyLemon</groupId><artifactId>APIJSON</artifactId><version>具体版本号</version>
</dependency>
2. 定义实体类并配置权限
- 以操作用户表
User为例,定义实体类并添加权限配置。
//注册表并添加权限,用默认配置
@MethodAccess
public class User {
//内容一般仅供表字段说明及Android App开发使用,服务端不用的可不写。
}
//Verifier内添加权限
accessMap.put(User.class.getSimpleName(), getAccessMap(User.class.getAnnotation(MethodAccess.class)));
还可以定制POST请求的角色权限,如只允许未登录角色和管理员角色新增User:
@MethodAccess(POST = {UNKNOWN, ADMIN} //只允许未登录角色和管理员角色新增User,默认配置是{LOGIN, ADMIN}
)
public class User {}
3. 进行数据操作
- 查询操作
- 查询单个用户
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;public class APISample {public static void main(String[] args) throws Exception {OkHttpClient client = new OkHttpClient();String url = "http://apijson.cn:8080/get";JSONObject requestBody = new JSONObject();requestBody.put("User", new JSONObject().fluentPut("id", 82001));String requestJson = requestBody.toJSONString();Request request = new Request.Builder().url(url).post(RequestBody.create(MediaType.parse("application/json"), requestJson)).build();Response response = client.newCall(request).execute();String responseJson = response.body().string();JSONObject responseBody = JSON.parseObject(responseJson);System.out.println(responseBody);}
}
- 新增操作
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;public class APISample {public static void main(String[] args) throws Exception {OkHttpClient client = new OkHttpClient();String url = "http://apijson.cn:8080/post";JSONObject requestBody = new JSONObject();requestBody.put("Comment", new JSONObject().fluentPut("userId", 82001).fluentPut("momentId", 15).fluentPut("content", "测试新增评论"));requestBody.put("tag", "Comment");String requestJson = requestBody.toJSONString();Request request = new Request.Builder().url(url).post(RequestBody.create(MediaType.parse("application/json"), requestJson)).build();Response response = client.newCall(request).execute();String responseJson = response.body().string();JSONObject responseBody = JSON.parseObject(responseJson);System.out.println(responseBody);}
}
- 删除操作
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;public class APISample {public static void main(String[] args) throws Exception {OkHttpClient client = new OkHttpClient();String url = "http://apijson.cn:8080/delete";JSONObject requestBody = new JSONObject();requestBody.put("Comment", new JSONObject().fluentPut("id", 1510394480987));requestBody.put("tag", "Comment");String requestJson = requestBody.toJSONString();Request request = new Request.Builder().url(url).post(RequestBody.create(MediaType.parse("application/json"), requestJson)).build();Response response = client.newCall(request).execute();String responseJson = response.body().string();JSONObject responseBody = JSON.parseObject(responseJson);System.out.println(responseBody);}
}
- 修改操作
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;public class APISample {public static void main(String[] args) throws Exception {OkHttpClient client = new OkHttpClient();String url = "http://apijson.cn:8080/put";JSONObject requestBody = new JSONObject();requestBody.put("Comment", new JSONObject().fluentPut("id", 22).fluentPut("content", "测试修改评论"));requestBody.put("tag", "Comment");String requestJson = requestBody.toJSONString();Request request = new Request.Builder().url(url).post(RequestBody.create(MediaType.parse("application/json"), requestJson)).build();Response response = client.newCall(request).execute();String responseJson = response.body().string();JSONObject responseBody = JSON.parseObject(responseJson);System.out.println(responseBody);}
}
上述代码展示了在Java中如何使用APIJSON进行常见的数据操作,包括查询、新增、删除和修改。在实际使用中,需要根据具体的业务需求和项目结构进行适当调整。
类似APIJSON的工具
除了 APIJSON,还有以下类似的工具:
一、GraphQL
-
特点:
- 允许客户端精确指定所需的数据,避免了传统 RESTful API 中可能出现的过度获取或不足获取数据的问题。
- 强类型系统确保数据的准确性和一致性。通过定义清晰的类型和关系,GraphQL 使得数据的结构更加明确,减少了数据不一致和错误的可能性。
- 支持灵活的查询和变更操作,可以通过一个请求获取多个资源的数据,并且可以对数据进行复杂的筛选、排序和分页等操作。
-
适用场景:
- 适用于复杂的前端应用,特别是需要频繁获取不同类型数据并进行组合展示的场景。例如,社交网络应用中,用户可能需要同时获取自己的个人信息、关注列表、发布的内容以及评论等数据,GraphQL 可以通过一个请求满足这种需求。
- 对于需要频繁迭代和变更 API 的项目也非常适合,因为它可以通过修改 schema 来快速适应业务需求的变化,而不需要像传统 API 那样修改多个端点。
二、Falcor
-
特点:
- 采用虚拟 JSON 图的概念,可以将多个数据源整合到一个统一的、可遍历的 JSON 对象中。这种方式使得客户端可以像访问本地数据一样访问远程数据,无需关心数据的具体来源和获取方式。
- 支持高效的数据缓存和更新机制。当部分数据发生变化时,Falcor 可以只更新变化的部分,而不是重新获取整个数据集,从而提高了数据的访问效率和响应速度。
- 与现代前端框架(如 React 和 Angular)配合良好,可以方便地集成到前端应用中,实现高效的数据管理和展示。
-
适用场景:
- 适用于大型企业级应用,特别是那些需要整合多个不同数据源的场景。例如,在金融行业中,可能需要从多个数据库、外部服务和文件系统中获取数据,Falcor 可以将这些数据源统一起来,为前端提供一致的数据访问接口。
- 对于需要实时更新数据的应用也很有优势,如在线协作工具、实时监控系统等,Falcor 的高效更新机制可以确保数据的及时性和准确性。
三、OData
-
特点:
- 基于 RESTful 架构,提供了一套标准化的查询和操作语言,使得不同的系统之间可以更容易地进行数据交互。
- 支持丰富的查询选项,包括筛选、排序、分页、投影等,可以满足各种复杂的查询需求。
- 提供了元数据服务,使得客户端可以了解数据的结构和关系,从而更加方便地进行数据访问和操作。
-
适用场景:
- 适用于企业级应用集成,特别是需要与多个不同系统进行数据交互的场景。例如,在企业内部,不同的部门可能使用不同的系统来管理数据,OData 可以作为一个统一的数据访问接口,方便各个系统之间的数据共享和集成。
- 对于需要遵循一定标准和规范的项目也非常适合,因为 OData 是一个被广泛认可的标准,具有良好的兼容性和可扩展性。
相关文章:
APIJSON的使用
APIJSON是一个用于简化后端接口开发的工具,在Java中可以按照以下步骤使用: 1. 引入依赖 在Java项目中,需要引入APIJSON的相关依赖。如果使用Maven,可以在pom.xml文件中添加以下依赖: <dependency><groupId…...
简单三步完成 Telegram 生态的 Web3 冷启动
在竞争激烈的 Web3 领域,强有力的启动往往能决定成败。Telegram 无疑当下最火热的流量池,是很多 Web3 项目冷启动阶段的必选项。 但眼看着好多项目在 Telegram 生态火速获取百万级甚至千万级别的用户,自己的项目要怎么开始做增长,…...
Go Wails 学习笔记:创建第一个项目
文章目录 1. 安装 Wails2. 创建 Wails 项目3. 项目结构4. 运行项目5. 构建项目6. 部署和发布总结 Wails 是一个用于构建跨平台桌面应用程序的框架,允许开发者使用前端技术(如 HTML、CSS、JavaScript)以及 Go 语言来开发桌面应用。本文基于官方…...
Postman使用-基础篇
前言 本教程将结合业界广为推崇和使用的RestAPI设计典范Github API,详细介绍Postman接口测试工具的使用方法和实战技巧。 在开始这个教程之前,先聊一下为什么接口测试在现软件行业如此重要? 为什么我们要学习Postman? 现代软件…...
LeetCode 202.快乐数
LeetCode 202.快乐数 C 思路: 用快慢指针来进行解答,可以将其看做一个回环链表,慢指针完成一次平方和操作,快指针完成两次平方和操作,当快慢指针相遇时,判断快慢指针是否为1(为1以后无论怎么取平方和都会为…...
Redis-03 持久化(RDB, AOF,混合持久化)及原理
1,持久化 Redis的持久化是必须的,当Redis服务宕机后,如果没有持久化,重启服务后redis中的数据都将丢失,所有的数据操作都将直连数据库,系统性能会大幅降低,所以在使用Redis做缓存服务时必须持久…...
TikTok账号策略:IP和网络环境的要求分析
在当今社交媒体迅猛发展的时代,TikTok作为一款短视频平台,凭借其独特的算法和庞大的用户基础,吸引了越来越多的内容创作者和营销人员。成功地运营一个TikTok账号,除了优质的内容创作外,良好的IP和网络环境也至关重要。…...
vue后台管理系统从0到1(5)
文章目录 vue后台管理系统从0到1(5)完善侧边栏修改bug渲染header导航栏 vue后台管理系统从0到1(5) 接上一期,我们需要完善我们的侧边狼 完善侧边栏 我们在 element 组件中可以看见,这一个侧边栏是符合我们…...
OpenAI的新功能Canvas,效果还不错
时隔两年,ChatGPT终迎来界面全新升级! 这一次,OpenAI官宣推出类似 Anthropic 的 Artifacts 的界面交互功能 canvas,并称这是一种使用 ChatGPT 写作和编程的新方式。不论是写作,还是编码,都可以开启全新的交…...
了解一些常用的Javascript对象方法
javascript 的对象包含许多有用的方法,可以帮助开发人员轻松操作对象。让我们通过简短的解释和示例来了解一些最重要的内容 object.create()object.assign()object.keys()object.values()object.entries()object.freeze()object.seal()object.preventextensions()o…...
【知识科普】GraphQL一个强大的API查询语言
文章目录 概述📚 GraphQL 的类型系统是如何工作的?🔍 能否举例说明 GraphQL 的类型系统在实际应用中是如何工作的?位置步骤 1: 定义类型步骤 2: 实现解析器步骤 3: 客户端查询步骤 4: 执行查询 🛠️ 在实际开发中&…...
Spring Boot 整合达梦
Maven 依赖 <dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.2.192</version></dependency> yml配置 datasource:master:url: jdbc:dm://192.168.211.113:30236username: WE…...
Vue.js 组件开发基本步骤
Vue.js 是一个构建用户界面的渐进式框架,它被设计为能够轻松地被集成进项目的部分功能,或者用于构建完整的前端应用。组件化是 Vue.js 的核心概念之一,它允许开发者将界面拆分成独立、可复用的组件,每个组件负责应用中的一小部分功…...
博客搭建之路:hexo使用next主题渲染流程图
文章目录 hexo使用next主题渲染流程图 hexo使用next主题渲染流程图 hexo版本5.0.2 npm版本6.14.7 next版本7.8.0 next主题的配置文件中搜索找到mermaid,把enable配置改为true mermaid:enable: true# Available themes: default | dark | forest | neutraltheme: de…...
【数据结构与算法】线性表顺序存储结构
文章目录 一.顺序表的存储结构定义1.1定义1.2 图示1.3结构代码*C语言的内存动态分配 二.顺序表基本运算*参数传递2.1建立2.2初始化(InitList(&L))2.3销毁(DestroyList(&L))2.4判断线性表是否为空表(ListEmpty(L))2.5求线性表的长度(ListLength(L))2.6输出线性表(DispLi…...
Unix Standardization and Implementations
Unix标准化 在Unix未制定较为完备的标准时,各个平台的系统调用方式各异,所开发出的应用程序存在可移植性差的特点,因此人们呼吁指定一套Unix标准来规范接口,增加应用程序的可移植性。所谓Unix标准即适用于Unix环境下的一系列函数…...
Windows 与 Java 环境下的 Redis 利用分析
1 前言 在最近的一次攻防演练中,遇到了两个未授权访问的 Redis 实例。起初以为可以直接利用,但后来发现竟然是Windows Java (Tomcat)。因为网上没有看到相关的利用文章,所以在经过摸索,成功解决之后决定简单写一写。 本文介绍了…...
机器视觉系统硬件组成之工业相机篇
工业相机是一种非常重要的机器视觉器件,它能够将被采集的图像信息通过电路转换成电信号,再通过模数转换器(ADC)将其转化为数字信号,最后以标准的视频信号输出。工业相机在机器视觉领域得到了广泛应用,包括质…...
离线安装bitnami-gitlab8.8.4+汉化
注意: 常规安装gitlab需要联网,而按装bitnami-gitlab无需联网(bitnami-gitlab用于内网环境无法联网时安装gitlab,两者是一个东西只是名字不一样)bitnami-gitlab-8.8.4版本可以汉化成功新用户注册账户无需激活也可以直接登录,因为…...
亚马逊日本站推出AI日语listing功能,Listing一键发布,轻松无忧!
随着大数据与人工智能技术的成熟,AI在电商的应用也越来越多,各大电商平台都在陆续引进AI人工智能,有客服方面的,也有发布Listing方面的。 10月17日消息,亚马逊日本站近日宣布推出一项支持日语的人工智能listing功能&am…...
用Python+OpenCV手把手实现Prewitt边缘检测(附完整代码与效果对比图)
用PythonOpenCV手把手实现Prewitt边缘检测(附完整代码与效果对比图) 边缘检测是计算机视觉中最基础也最关键的预处理步骤之一。想象一下,当你需要让计算机"看清"一张照片中的物体轮廓时,边缘检测算法就是它的"视觉…...
零基础轻松拿捏!魔珐星云青少年健康运动教学数字人搭建全流程指南
大家好!本次给大家分享一款面向青少年体育教育的AI创意实践项目——青少年健康运动教学智能数字交互系统。本项目聚焦青少年体质健康痛点,围绕体育教学智能化升级需求,打造集健康知识教学、运动动作陪练、健康知识考核、运动能力评测于一体的…...
高性能Windows流媒体服务器部署:5大核心技术与3种实战架构深度解析
高性能Windows流媒体服务器部署:5大核心技术与3种实战架构深度解析 【免费下载链接】srs-windows 项目地址: https://gitcode.com/gh_mirrors/sr/srs-windows 在Windows平台上构建专业级流媒体服务系统,需要综合考虑协议兼容性、性能优化和部署架…...
为Alchitry Au FPGA开发板外接JTAG接口的完整指南
1. 项目概述与核心价值如果你正在使用基于Xilinx Artix-7 FPGA的Alchitry Au或Au开发板,并且已经厌倦了每次调试或烧录都要依赖板载的USB-JTAG桥接芯片,或者你的项目已经将板载USB接口挪作他用,那么为你的开发板外接一个独立的JTAG调试器&…...
如何在macOS上免费解锁QQ音乐加密文件:完整指南
如何在macOS上免费解锁QQ音乐加密文件:完整指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结果…...
defx.nvim 安装与配置完全教程:从零开始搭建高效文件管理系统 [特殊字符]
defx.nvim 安装与配置完全教程:从零开始搭建高效文件管理系统 🚀 【免费下载链接】defx.nvim :file_folder: The dark powered file explorer implementation for neovim/Vim8 项目地址: https://gitcode.com/gh_mirrors/de/defx.nvim defx.nvim …...
INT8量化下TVA注意力对齐精度保障方案
重磅预告:本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容,该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著,特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...
HiveWE终极指南:快速掌握魔兽争霸III现代化地图编辑器
HiveWE终极指南:快速掌握魔兽争霸III现代化地图编辑器 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为传统魔兽争霸III地图编辑器缓慢的加载速度和复杂的操作界面而烦恼吗?Hiv…...
Claude Code + LM Studio + CC-Switch 本地自动化编程部署指南
Claude Code LM Studio CC-Switch 本地自动化编程部署指南 本指南汇总了在 Windows 本地环境下,使用 Claude Code 配合 LM Studio 本地模型、CC-Switch 代理进行自动化编程开发的完整配置方案。 目录 硬件与模型选型LM Studio 本地模型部署CC-Switch 代理配置Cla…...
抖音批量下载助手:一键构建你的专属视频素材库
抖音批量下载助手:一键构建你的专属视频素材库 【免费下载链接】douyinhelper 抖音批量下载助手 项目地址: https://gitcode.com/gh_mirrors/do/douyinhelper 还在为手动保存抖音视频而烦恼吗?想要批量获取心仪创作者的精彩内容却无从下手&#x…...
