当前位置: 首页 > news >正文

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是一个用于简化后端接口开发的工具&#xff0c;在Java中可以按照以下步骤使用&#xff1a; 1. 引入依赖 在Java项目中&#xff0c;需要引入APIJSON的相关依赖。如果使用Maven&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId…...

简单三步完成 Telegram 生态的 Web3 冷启动

在竞争激烈的 Web3 领域&#xff0c;强有力的启动往往能决定成败。Telegram 无疑当下最火热的流量池&#xff0c;是很多 Web3 项目冷启动阶段的必选项。 但眼看着好多项目在 Telegram 生态火速获取百万级甚至千万级别的用户&#xff0c;自己的项目要怎么开始做增长&#xff0c;…...

Go Wails 学习笔记:创建第一个项目

文章目录 1. 安装 Wails2. 创建 Wails 项目3. 项目结构4. 运行项目5. 构建项目6. 部署和发布总结 Wails 是一个用于构建跨平台桌面应用程序的框架&#xff0c;允许开发者使用前端技术&#xff08;如 HTML、CSS、JavaScript&#xff09;以及 Go 语言来开发桌面应用。本文基于官方…...

Postman使用-基础篇

前言 本教程将结合业界广为推崇和使用的RestAPI设计典范Github API&#xff0c;详细介绍Postman接口测试工具的使用方法和实战技巧。 在开始这个教程之前&#xff0c;先聊一下为什么接口测试在现软件行业如此重要&#xff1f; 为什么我们要学习Postman&#xff1f; 现代软件…...

LeetCode 202.快乐数

LeetCode 202.快乐数 C 思路&#xff1a; 用快慢指针来进行解答&#xff0c;可以将其看做一个回环链表&#xff0c;慢指针完成一次平方和操作&#xff0c;快指针完成两次平方和操作&#xff0c;当快慢指针相遇时&#xff0c;判断快慢指针是否为1(为1以后无论怎么取平方和都会为…...

Redis-03 持久化(RDB, AOF,混合持久化)及原理

1&#xff0c;持久化 Redis的持久化是必须的&#xff0c;当Redis服务宕机后&#xff0c;如果没有持久化&#xff0c;重启服务后redis中的数据都将丢失&#xff0c;所有的数据操作都将直连数据库&#xff0c;系统性能会大幅降低&#xff0c;所以在使用Redis做缓存服务时必须持久…...

TikTok账号策略:IP和网络环境的要求分析

在当今社交媒体迅猛发展的时代&#xff0c;TikTok作为一款短视频平台&#xff0c;凭借其独特的算法和庞大的用户基础&#xff0c;吸引了越来越多的内容创作者和营销人员。成功地运营一个TikTok账号&#xff0c;除了优质的内容创作外&#xff0c;良好的IP和网络环境也至关重要。…...

vue后台管理系统从0到1(5)

文章目录 vue后台管理系统从0到1&#xff08;5&#xff09;完善侧边栏修改bug渲染header导航栏 vue后台管理系统从0到1&#xff08;5&#xff09; 接上一期&#xff0c;我们需要完善我们的侧边狼 完善侧边栏 我们在 element 组件中可以看见&#xff0c;这一个侧边栏是符合我们…...

OpenAI的新功能Canvas,效果还不错

时隔两年&#xff0c;ChatGPT终迎来界面全新升级&#xff01; 这一次&#xff0c;OpenAI官宣推出类似 Anthropic 的 Artifacts 的界面交互功能 canvas&#xff0c;并称这是一种使用 ChatGPT 写作和编程的新方式。不论是写作&#xff0c;还是编码&#xff0c;都可以开启全新的交…...

了解一些常用的Javascript对象方法

javascript 的对象包含许多有用的方法&#xff0c;可以帮助开发人员轻松操作对象。让我们通过简短的解释和示例来了解一些最重要的内容 object.create()object.assign()object.keys()object.values()object.entries()object.freeze()object.seal()object.preventextensions()o…...

【知识科普】GraphQL一个强大的API查询语言

文章目录 概述&#x1f4da; GraphQL 的类型系统是如何工作的&#xff1f;&#x1f50d; 能否举例说明 GraphQL 的类型系统在实际应用中是如何工作的&#xff1f;位置步骤 1: 定义类型步骤 2: 实现解析器步骤 3: 客户端查询步骤 4: 执行查询 &#x1f6e0;️ 在实际开发中&…...

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 是一个构建用户界面的渐进式框架&#xff0c;它被设计为能够轻松地被集成进项目的部分功能&#xff0c;或者用于构建完整的前端应用。组件化是 Vue.js 的核心概念之一&#xff0c;它允许开发者将界面拆分成独立、可复用的组件&#xff0c;每个组件负责应用中的一小部分功…...

博客搭建之路:hexo使用next主题渲染流程图

文章目录 hexo使用next主题渲染流程图 hexo使用next主题渲染流程图 hexo版本5.0.2 npm版本6.14.7 next版本7.8.0 next主题的配置文件中搜索找到mermaid&#xff0c;把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未制定较为完备的标准时&#xff0c;各个平台的系统调用方式各异&#xff0c;所开发出的应用程序存在可移植性差的特点&#xff0c;因此人们呼吁指定一套Unix标准来规范接口&#xff0c;增加应用程序的可移植性。所谓Unix标准即适用于Unix环境下的一系列函数…...

Windows 与 Java 环境下的 Redis 利用分析

1 前言 在最近的一次攻防演练中&#xff0c;遇到了两个未授权访问的 Redis 实例。起初以为可以直接利用&#xff0c;但后来发现竟然是Windows Java (Tomcat)。因为网上没有看到相关的利用文章&#xff0c;所以在经过摸索&#xff0c;成功解决之后决定简单写一写。 本文介绍了…...

机器视觉系统硬件组成之工业相机篇

工业相机是一种非常重要的机器视觉器件&#xff0c;它能够将被采集的图像信息通过电路转换成电信号&#xff0c;再通过模数转换器&#xff08;ADC&#xff09;将其转化为数字信号&#xff0c;最后以标准的视频信号输出。工业相机在机器视觉领域得到了广泛应用&#xff0c;包括质…...

离线安装bitnami-gitlab8.8.4+汉化

注意&#xff1a; 常规安装gitlab需要联网&#xff0c;而按装bitnami-gitlab无需联网(bitnami-gitlab用于内网环境无法联网时安装gitlab&#xff0c;两者是一个东西只是名字不一样)bitnami-gitlab-8.8.4版本可以汉化成功新用户注册账户无需激活也可以直接登录&#xff0c;因为…...

亚马逊日本站推出AI日语listing功能,Listing一键发布,轻松无忧!

随着大数据与人工智能技术的成熟&#xff0c;AI在电商的应用也越来越多&#xff0c;各大电商平台都在陆续引进AI人工智能&#xff0c;有客服方面的&#xff0c;也有发布Listing方面的。 10月17日消息&#xff0c;亚马逊日本站近日宣布推出一项支持日语的人工智能listing功能&am…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...

Vue3 PC端 UI组件库我更推荐Naive UI

一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用&#xff0c;前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率&#xff0c;还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库&#xff08;Naive UI、Element …...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...

对象回调初步研究

_OBJECT_TYPE结构分析 在介绍什么是对象回调前&#xff0c;首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例&#xff0c;用_OBJECT_TYPE这个结构来解析它&#xff0c;0x80处就是今天要介绍的回调链表&#xff0c;但是先不着急&#xff0c;先把目光…...

Java多线程实现之Runnable接口深度解析

Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...

【AI News | 20250609】每日AI进展

AI Repos 1、OpenHands-Versa OpenHands-Versa 是一个通用型 AI 智能体&#xff0c;通过结合代码编辑与执行、网络搜索、多模态网络浏览和文件访问等通用工具&#xff0c;在软件工程、网络导航和工作流自动化等多个领域展现出卓越性能。它在 SWE-Bench Multimodal、GAIA 和 Th…...