数据分析及治理必不可少的步骤即是数据对接,数据对接三种方式: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); } }