API项目:模拟接口开发和调用

news2024/11/23 13:41:44

创建模拟接口

controller 层

控制层,负责处理用户请求,并根据请求调用相应的业务逻辑,然后返回对应的视图或数据。

model 层

数据模型层,负责数据的处理和业务逻辑;在 model 层中,我们经常会为每一个实体或者对象创建一个对应的类。

在 model 层创建一个 User类,在 User 类写一个用户名属性。

在 controller 包下新建 NameController.java 

调用 http://localhost:8123/api/name/?name=sujie

开发调用接口

已经成功地开发出了这个接口,但对于开发者来说,总不能每次都通过在浏览器地址栏输入接口地址来调用它,那么开发者通常是如何调用接口的呢?要么在前端进行调用,要么在后端,即我们的后端系统调用你的接口。

出于安全考虑,我们通常会选择在后端调用第三方 API,因为这样可以避免在前端暴露诸如密码这样的敏感信息。

下一步,将演示如何在项目中调用第三方的接口。

调用接口的方式

HTTP 调用方式:

  1. HttpClient
  2. RestTemplate
  3. 第三方库(OKHTTP、Hutool)

工具的官方文档:

  1. Hutool
  2. Http 客户端工具类

Hutool 引入之后,就可以用它各种各样的工具了,在 Hutool 找到Http 客户端工具类-HttpUtil,我们就用它来快速的调用其他的 http 请求。

// 可以单独传入http参数,这样参数会自动做URL编码,拼接在URL中
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("city", "北京");

String result3= HttpUtil.get("https://www.baidu.com", paramMap);

 Restful 请求

String json = ...;
String result2 = HttpRequest.post(url)
    .body(json)
    .execute().body();

 负责调用第三方接口的类

public class SuApiClient {
    public String getNameByGet(String name) {
        // 可以单独传入http参数,这样参数会自动做URL编码,拼接在URL中
        HashMap<String, Object> paramMap = new HashMap<>();
        // 将"name"参数添加到映射中
        paramMap.put("name", name);
        // 使用HttpUtil工具发起GET请求,并获取服务器返回的结果
        String result = HttpUtil.get("http://localhost:8123/api/name/", paramMap);
        // 打印服务器返回的结果
        System.out.println(result);
        // 返回服务器返回的结果
        return result;
    }

    public String getNameByPost(@RequestParam String name) {
        // 可以单独传入http参数,这样参数会自动做URL编码,拼接在URL中
        HashMap<String, Object> paramMap = new HashMap<>();
        paramMap.put("name", name);
        // 使用HttpUtil工具发起POST请求,并获取服务器返回的结果
        String result = HttpUtil.post("http://localhost:8123/api/name/name", paramMap);
        System.out.println(result);
        return result;
    }

    // 使用POST方法向服务器发送User对象,并获取服务器返回的结果
    public String getUserNameByPost(@RequestBody User user) {
        // 将User对象转换为JSON字符串
        String json = JSONUtil.toJsonStr(user);
        // 使用HttpRequest工具发起POST请求,并获取服务器的响应
        HttpResponse httpResponse = HttpRequest.post("http://localhost:8123/api/name/user")
                .body(json) // 将JSON字符串设置为请求体
                .execute(); // 执行请求
        // 打印服务器返回的状态码
        System.out.println(httpResponse.getStatus());
        // 获取服务器返回的结果
        String result = httpResponse.body();
        // 打印服务器返回的结果
        System.out.println(result);
        // 返回服务器返回的结果
        return result;
    }
}

 测试类

 

public class Main {
    public static void main(String[] args) {
        SuApiClient suApiClient = new SuApiClient();

        String result1 = suApiClient.getNameByGet("苏姐");
        String result2 = suApiClient.getNameByPost("苏姐");
        User user = new User();
        user.setUsername("sj");
        String result3 = suApiClient.getUserNameByPost(user);

        System.out.println(result1);
        System.out.println(result2);
        System.out.println(result3);
    }
}

结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2197383.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无人机在矿业领域的应用!

矿区测绘与建模 无人机可以快速、全面地获取矿区的地形地貌数据&#xff0c;生成高精度的二维或三维模型。 这些模型可用于矿区的规划、设计、监测和管理&#xff0c;提高矿山的生产效率。 库存量量化监测 无人机能够捕捉厘米级的地形数据&#xff0c;通过计算得出准确的库…

ADC -模数转换

ADC -模数转换 - 将模拟信号转换为数字信号 目录 ADC -模数转换 - 将模拟信号转换为数字信号 STM32方面使用的AD转化方式是逐次逼近法 ADC 什么叫单次&#xff0c;连续&#xff0c;扫描&#xff0c;中断&#xff1f; 应用&#xff1a;运用STM32中ADC转…

Vue入门-小黑课堂Demo

功能需求&#xff1a; ①列表渲染 ②删除功能 ③添加功能 ④底部统计和清空 页面效果&#xff1a; 代码展示&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" c…

年会工作会议会务报名签到小程序开源版开发

年会工作会议会务报名签到小程序开源版开发 会议管理微信小程序&#xff0c;对会议流程、开支、数量、标准、供应商提供一种标准化的管理方法。以达到量化成本节约&#xff0c;风险缓解和服务质量提升的目的。适用于大型论坛、峰会、学术会议、政府大会、合作伙伴大会、经销商…

大多数人不知道的:线程池CallerRunsPolicy()拒绝策略

总所周知&#xff0c;java里面线程池的四个拒绝策略 AbortPolicy 丢弃并抛出RejectedExecutionException异常 DiscardPolicy 直接丢弃 DiscardOldestPolicy 直接丢弃最前面的任务&#xff0c;尝试执行新任务 CallerRunsPolicy 由调用线程池的线程处理任务&a…

linux安装minianconda

文章目录 &#x1f315;我的配置&#x1f315;从清华镜像源里下载minianaconda&#x1f315;安装&#x1f315;自定义安装位置&#x1f315;是否关闭打开终端默认进入anaconda的设置&#xff1f;&#x1f315;配置清华镜像源 &#x1f315;我的配置 ubuntu 22.04LTS &#x1…

全都燃起来了!黄金周车市销量成绩出炉

文/王俣祺 导语&#xff1a;国庆黄金周对于其他行业可能是个放松的好时机&#xff0c;但对于国内汽车市场而言可能是下半年最关键的“战场”。这几天&#xff0c;全国各地的车展和4S店简直热闹非凡&#xff0c;新能源车尤其抢镜&#xff0c;优惠活动不断&#xff0c;引得消费者…

DAMA数据管理知识体系(第9章 文件和内容管理)

课本内容 9.1 引言 概要 文件和内容管理是指针对存储在关系型数据库之外的数据和信息的采集、存储、访问和使用过程的管理[1]。它的重点在于保持文件和其他非结构化或半结构化信息的完整性&#xff0c;并使这些信息能够被访问。业务驱动因素 法规遵从性要求 法律法规要求组织保…

基于uniapp+django微信小程序 食品安全信息管理系统

目录 项目介绍具体实现截图开发者工具介绍技术路线性能/安全/负载方面开发语言以及框架介绍python-flask核心代码部分展示python-django核心代码部分展示详细视频演示源码获取 项目介绍 食品安全信息管理系统设计的目的是为用户提供食品信息、科普专栏、食品检测、检测结果、交…

力扣LeetCode-链表中的循环与递归使用

标题做题的时候发现循环与递归的使用差别&#xff1a; 看两道题&#xff1a; 两道题都是不知道链表有多长&#xff0c;所以需要用到循环&#xff0c;用到循环就可以把整个过程分成多个循环体&#xff0c;就是每一次循环要执行的内容。 反转链表&#xff1a; 把null–>1…

【图论】迪杰特斯拉算法

文章目录 迪杰特斯拉算法主要特点基本思想算法步骤示例 实现迪杰斯特拉算法基本步骤算法思路 总结 迪杰特斯拉算法 迪杰特斯拉算法是由荷兰计算机科学家艾兹赫尔迪杰特斯拉&#xff08;Edsger W. Dijkstra&#xff09;在1956年提出的&#xff0c;用于解决单源最短路径问题的经…

动态规划算法题目练习——91.解码方法

1.题目解析 题目来源&#xff1a;91.解码方法——力扣 测试用例 2.算法原理 基础版本 1.状态表示 由于题目只要求返回第i个位置的可能情况&#xff0c;则只需要开辟n(ns.size())个大小的dp表即可 2.状态转移方程 题目可知第i个位置可以单独解码也可以与前一个位置组合解码&am…

通付盾|打造新型信息基础设施

2024年9月4日&#xff0c;工业和信息化部、中央网信办等十一部门联合印发《关于推动新型信息基础设施协调发展有关事项的通知》&#xff0c;从全国统筹布局、跨区域协调、跨网络协调、跨行业协调、发展与绿色协调、发展与安全协调、跨部门政策协调等方面明确了21条具体举措&…

命名管道Linux

管道是 毫不相关的进程进程间通信::命名管道 管道 首先自己要用用户层缓冲区&#xff0c;还得把用户层缓冲区拷贝到管道里&#xff0c;&#xff08;从键盘里输入数据到用户层缓冲区里面&#xff09;&#xff0c;然后用户层缓冲区通过系统调用&#xff08;write&#xff09;写…

【JavaEE】——文件IO

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;认识文件 1&#xff1a;文件的概念 2&#xff1a;文件的结构 3&#xff1a;文件路径…

电脑好用便签怎么用,好用的便签软件让你轻松提高工作效率

在忙碌的工作中&#xff0c;作为一名牛马打工人&#xff0c;我们经常需要记住许多重要的事项和任务。有时候&#xff0c;简单的脑力记忆可能会让我们遗漏一些事情&#xff0c;而一个好用的便签软件就可以帮助我们解决这个问题&#xff0c;提高我们的工作效率。那么&#xff0c;…

四.python核心语法

目录 1.序列 1.1. 索引 1.2. 切片 1.3. 总结 2.加法和乘法 2.1. 加法 2.2. 乘法 3.常用函数 3.1.sum()函数 3.2.max()函数和min()函数 3.3.len()函数 4. list 列表 [ ] 基本操作 4.1. 列表的定义 4.2. 列表的创建&#xff08;list()函数&#xff09; 4.3. 列表的…

实施BADI增强支持多个活动的增强实施

找到一个BADI之后&#xff0c;在SE18里面输入BADI名称 一定要查看当前BADI是否支持多种用法&#xff0c;即同一个BADI定义可以实施多个BADI增强。 1、勾选多种用法&#xff0c;才能新实施BADI增强&#xff0c;支持多个实施可同时是活动的。 2、未勾选多种用法&#xff0c;只…

C++——STL简介

目录 一、什么是STL 二、STL的版本 三、STL的六大组件 没用的话..... 不知不觉两个月没写博客了&#xff0c;暑假后期因为学校的事情在忙&#xff0c;开学又在准备学校的java免修&#xff0c;再然后才继续开始学C&#xff0c;然后最近打算继续写博客沉淀一下最近学到的几周…

Echarts实现订单数据统计,前端+后端 代码

以下是静态统计图可以直接看到统计图&#xff0c;复制粘贴即可看到效果&#xff0c;但是数据是死的。下面我会介绍一种动态的方法 &#xff0c;后端动态返回&#xff0c;基于订单页面的数据&#xff0c;来渲染统计图。 Vue 安装 Echarts npm i echarts -S 静态 &#xff1a; …