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

创建模拟接口

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);
    }
}

结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值