数据分析全流程必修课之HTTP接口

本文介绍了数据分析中数据对接的HTTP接口方式,包括GET、POST、PUT和DELETE四种常用方法。通过Spring Boot后台框架创建接口,并使用RestTemplate进行调用。作者强调了自定义接口调用工具类的重要性,并分享了一周学习的成果,鼓励实践操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据分析及治理必不可少的步骤即是数据对接,数据对接三种方式:socket方式、ftp方式以及共享数据库,socket方式即HTTP接口方式,FTP方式即共享服务器,本次主要介绍socket方式。感谢黄师傅本周的悉心指导,愿学习的路上,你我惜而同行!

1.HTTP对接方式(8种)

序号

传输

方式

描述

1

get

请求指定页面,返回实体主体

2

post

提交数据处理请求,数据包含在请求体中,可能导致资源修改

3

put

从客户端向服务器传送的数据取代指定文档的内容

4

delete

请求服务器删除指定页面

5

head

类似get但返回响应无具体内容,用于获取报头

6

connect

预留给能将链接改为

7

options

对特定资源发送请求来测试服务器的功能性

8

trace

回显服务器收到的请求,用于测试或诊断

以上8种,常用前四种,简记如下:get即查询,post即更改,put即新增,delete即删除,即增改删查(具体业务逻辑由开发接口人员制定,仅说明常规作用。)

2.接口创建及接口调用

接口创建,本人采用的是Spring Boot的后台框架,添加@“方式”+Mapping即可(方式即为上表关键词);接口调用采用Spring Boot封装好的RestTemplate类,勿需过于关注底层实现逻辑,面向对象即抽象,关注业务层实现逻辑即可。

3.自定义接口调用工具类

自定义工具类还是很有必要的,可以了解接口逻辑,也可以锻炼开发能力及抽象能力。一周时间本人学了常用4种方式的接口注册及调用,自定义了接口调用工具类,附上代码,希望能有机会帮到师弟师妹们~~(欢迎纠错,不胜感激!)

还是建议后来的师弟师妹手动自己去做,实践出真知!

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;

/**
 * HttpCustomizedUtils用于采用Http接口形式进行注册和请求,包括get、post、put、delete和跳过SSL验证,
 * 请求方式包括无参请求、带请求头Header、带请求体Body和带请求参数Params,
 * 方法名称:方式+WithH/WithB/WithP,分别代表Header、Body、Params。
 */
public class HttpCustomizedUtils {

    private static final RestTemplate restTemplate = new RestTemplate();

    /**
     * 绕过验证
     * @return
     * @throws NoSuchAlgorithmException
     * @throws KeyManagementException
     */
    public static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {
        SSLContext sc = SSLContext.getInstance("SSLv3");

        // 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法
        X509TrustManager trustManager = new X509TrustManager() {
            @Override
            public void checkClientTrusted(
                    java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
                    String paramString) throws CertificateException {
            }

            @Override
            public void checkServerTrusted(
                    java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
                    String paramString) throws CertificateException {
            }

            @Override
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }
        };

        sc.init(null, new TrustManager[]{trustManager}, null);
        return sc;
    }
    /**
     * 使用方法示例
     */
//    SSLContext sslContext = createIgnoreVerifySSL();
//    Registry socketFactoryRegistry = RegistryBuilder.create()
//            .register("http",PlainConnectionSocketFactory.INSTANCE)
//            .register("https",new SSLConnectionSocketFactory(sslContext)).build();
//    PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);

    //-------------------------------------------get---------------------------------------------
    /**
     * get无参
     * @param url
     * @return Object
     */
    public static Object get(String url) {
        return restTemplate.getForObject(url, Object.class);
    }

    /**
     * get带Params
     * @param url
     * @param params
     * @return Object
     */
    public static Object getWithP(String url, String params) {
        return restTemplate.getForObject(url+"?" + params, Object.class);
    }

    /**
     * get带Headers
     * @param url
     * @param headers
     * @return Object
     */
    public static Object getWithH(String url, HttpHeaders headers) {
        return restTemplate.getForObject(url, Object.class, headers);
    }

    /**
     * get带Body
     * @param url
     * @param body
     * @return Object
     */
    public static Object getWithB(String url, Object body) {
        HttpEntity httpEntity = new HttpEntity<>(body);
        return  restTemplate.getForEntity(url, Object.class, httpEntity).getBody();
    }

    /**
     * get带Params和Headers
     * @param url
     * @param params
     * @param headers
     * @return Object
     */
    public static Object getWithPH(String url, String params, HttpHeaders headers) {
        return  restTemplate.getForObject(url+"?"+ params, Object.class, headers);
    }

    /**
     * get带Params和body
     * @param url
     * @param params
     * @param body
     * @return Object
     */
    public static Object getWithPB(String url, String params, Object body) {
        HttpEntity httpEntity = new HttpEntity<>(body);
        return restTemplate.getForEntity(url+"?"+ params, Object.class, httpEntity).getBody();
    }

    /**
     * get带Headers和Body
     * @param url
     * @param headers
     * @param body
     * @return Object
     */
    public static Object getWithHB(String url, HttpHeaders headers, Object body) {
        HttpEntity httpEntity = new HttpEntity(body, headers);
        return restTemplate.getForEntity(url, Object.class, httpEntity).getBody();
    }

    /**
     * get带Params、Headers、Body
     * @param url
     * @param params
     * @param headers
     * @param body
     * @return Object
     */
    public static Object getWithPHB(String url, String params, HttpHeaders headers, Object body) {
        HttpEntity httpEntity = new HttpEntity(body, headers);
        return restTemplate.getForEntity(url+ "?" + params, Object.class, httpEntity).getBody();
    }

    //********************************************post*************************************************

    /**
     * post无参
     * @param url
     * @return Object
     */
    public static Object post(String url) {
        return restTemplate.postForObject(url,null, Object.class);
    }

    /**
     * post带params
     * @param url
     * @param params
     * @return Object
     */
    public static Object postWithP(String url, String params) {
         return restTemplate.postForObject(url+ "?" + params,null, Object.class);
    }

    /**
     * post带Headers
     * @param url
     * @param headers
     * @return Object
     */
    public static Object postWithH(String url, HttpHeaders headers) {
        HttpEntity httpEntity = new HttpEntity<>(headers);
        return restTemplate.postForObject(url, httpEntity, Object.class);
    }

    /**
     * post带Body
     * @param url
     * @param body
     * @return
     */
    public static Object postWithB(String url, Object body) {
        HttpEntity httpEntity = new HttpEntity<>(body);
        return  restTemplate.postForEntity(url, httpEntity, Object.class).getBody();
    }

    /**
     * post带Params、Headers
     * @param url
     * @param params
     * @param headers
     * @return Object
     */
    public static Object postWithPH(String url, String params, HttpHeaders headers) {
        HttpEntity httpEntity = new HttpEntity<>(headers);
        return restTemplate.postForObject(url + "?" + params, httpEntity, Object.class);
    }

    /**
     * post带Params、Body
     * @param url
     * @param params
     * @param body
     * @return Object
     */
    public static Object postWithPB(String url, String params, Object body) {
        HttpEntity httpEntity = new HttpEntity<>(body);
        return  restTemplate.postForEntity(url + "?" + params, httpEntity, Object.class).getBody();
    }

    /**
     * post带Headers、Body
     * @param url
     * @param headers
     * @param body
     * @return Object
     */
    public static Object postWithHB(String url, HttpHeaders headers, Object body) {
        HttpEntity httpEntity = new HttpEntity(body, headers);
        return  restTemplate.postForEntity(url, httpEntity, Object.class).getBody();
    }

    /**
     * post带Params、Headers、Body
     * @param url
     * @param params
     * @param headers
     * @param body
     * @return Object
     */
    public static Object postWithPHB(String url, String params, HttpHeaders headers, Object body) {
        HttpEntity httpEntity = new HttpEntity(body, headers);
        return  restTemplate.postForEntity(url + "?" + params, httpEntity, Object.class).getBody();
    }

    //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%put%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    /**
     * put无参
     * @param url
     * @return Object
     */
    public static Object put(String url) {
        HttpEntity httpEntity = new HttpEntity(null);
        return restTemplate.exchange(url, HttpMethod.PUT, httpEntity, Object.class);
    }

    /**
     * put带Params
     * @param url
     * @param params
     * @return Object
     */
    public static Object putWithP(String url, String params) {
        return HttpCustomizedUtils.put(url + "?" + params);
    }

    /**
     * put带Headers
     * @param url
     * @param headers
     * @return Object
     */
    public static Object putWithH(String url, HttpHeaders headers) {
        HttpEntity httpEntity = new HttpEntity<>(headers);
        return restTemplate.exchange(url, HttpMethod.PUT, httpEntity, Object.class);
    }

    /**
     * put带Body
     * @param url
     * @param body
     * @return Object
     */
    public static Object putWithB(String url, Object body) {
        HttpEntity httpEntity = new HttpEntity<>(body);
        return restTemplate.exchange(url, HttpMethod.PUT, httpEntity, Object.class);
    }

    /**
     * put带Params、Body
     * @param url
     * @param params
     * @param headers
     * @return Object
     */
    public static Object putWithPH(String url, String params, HttpHeaders headers) {
        return HttpCustomizedUtils.putWithB(url + "?" + params, headers);
    }

    /**
     * put带Params、Body
     * @param url
     * @param params
     * @param body
     * @return Object
     */
    public static Object putWithPB(String url, String params, Object body) {
        return HttpCustomizedUtils.putWithB(url + "?" + params, body);
    }

    /**
     * put带Headers和Body
     * @param url
     * @param headers
     * @param body
     * @return Object
     */
    public static Object putWithHB(String url, HttpHeaders headers, Object body) {
        HttpEntity httpEntity = new HttpEntity<>(body, headers);
        return restTemplate.exchange(url, HttpMethod.PUT, httpEntity, Object.class);
    }

    /**
     * put带Params、Headers、Body
     * @param url
     * @param params
     * @param headers
     * @param body
     * @return Object
     */
    public static Object putWithPHB(String url, String params, HttpHeaders headers, Object body) {
        return HttpCustomizedUtils.putWithHB(url + "?" + params, headers, body);
    }

    delete///

    /**
     * delete无参
     * @param url
     * @return Object
     */
    public static Object delete(String url) {
        HttpEntity httpEntity = new HttpEntity(null);
        return restTemplate.exchange(url, HttpMethod.DELETE, httpEntity, Object.class);
    }

    /**
     * delete带Params
     * @param url
     * @param params
     * @return Object
     */
    public static Object deleteWithP(String url, String params) {
        return HttpCustomizedUtils.delete(url + "?" + params);
    }

    /**
     * delete带Headers
     * @param url
     * @param headers
     * @return Object
     */
    public static Object deleteWithH(String url, HttpHeaders headers) {
        HttpEntity httpEntity = new HttpEntity<>(headers);
        return restTemplate.exchange(url, HttpMethod.DELETE, httpEntity, Object.class);
    }

    /**
     * delete带Body
     * @param url
     * @param body
     * @return Object
     */
    public static Object deleteWithB(String url, Object body) {
        HttpEntity httpEntity = new HttpEntity<>(body);
        return restTemplate.exchange(url, HttpMethod.DELETE, httpEntity, Object.class);
    }

    /**
     * delete带Params、Headers
     * @param url
     * @param params
     * @param headers
     * @return Object
     */
    public static Object deleteWithPH(String url, String params, HttpHeaders headers) {
        return HttpCustomizedUtils.deleteWithH(url + "?" + params, headers);
    }

    /**
     * delete带Params、Body
     * @param url
     * @param params
     * @param body
     * @return Object
     */
    public static Object deleteWithPB(String url, String params, Object body) {
        return HttpCustomizedUtils.deleteWithB(url + "?" + params, body);
    }

    /**
     * delete带Headers、Body
     * @param url
     * @param headers
     * @param body
     * @return Object
     */
    public static Object deleteWithHB(String url, HttpHeaders headers, Object body) {
        HttpEntity httpEntity = new HttpEntity(body, headers);
        return restTemplate.exchange(url, HttpMethod.DELETE, httpEntity, Object.class);
    }

    /**
     * delete带Params、Headers、Body
     * @param url
     * @param params
     * @param headers
     * @param body
     * @return Object
     */
    public static Object deleteWithPHB(String url, String params, HttpHeaders headers, Object body) {
        return deleteWithHB(url + "?" + params, headers, body);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值