教你從頭開始用JAVA創(chuàng)建一個自己的簡單API并實現(xiàn)第三方調(diào)用
前言
相信大家對這個詞匯并不陌生,通俗來說API就是程序之間的接口,在學習和工作中經(jīng)常會調(diào)用別人的API,那么如果我們要做一個自己的API,要如何下手呢。本文將用Spring+JAVA編寫一個簡單的API,過程可供初學者參考。
為了顧及完全沒有經(jīng)驗的小白(比如我),本文內(nèi)容將比較詳細從創(chuàng)建開始講起,大佬可以跳過。
一、創(chuàng)建項目
其實API也是一個Spring項目,和別的spring項目沒有很大的區(qū)別,所以創(chuàng)建項目的過程也是一樣的。
首先選擇new project,并選擇Spring Inilalizr,如下圖所示
選擇Dependencies,此處作為示范勾選常用幾項
點擊finish,項目創(chuàng)建成功。
二、創(chuàng)建一個自己的簡單API
創(chuàng)建項目完成之后我們來簡單說一下配置部分,大多數(shù)時候我們調(diào)用別人的API都是用HTTP方式調(diào)用,這就需要URL,這個步驟我相信常用Spring的同學都不會陌生,所以我們簡要提一下就行。
①創(chuàng)建application.yml文件
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/my_blog_db?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=UTC username: root password: root mybatis-plus: mapper-locations: classpath:mapper/*Mapper.xml type-aliases-package: com.example.test.pojo server: port: 12345
創(chuàng)建完成之后我們的程序就可以開始運行了
下面正式開始制作API的過程,別人可以用各種方式請求調(diào)用你的API(如POST、GET),而我們也要有相應的返回值,返回值基本用通用返回Result類進行返回,所以,下面請建立一個Result類實現(xiàn)通用返回、enums包和utils包存放ResultEnum文件和ResultUtil文件,這兩個文件分別用于枚舉狀態(tài)與編寫方法,目前的項目結(jié)構(gòu)與代碼如下所示:
Result類代碼:
public class Result<T> { private Integer code; private String msg; private T data; }
ResultUtil類代碼:
public enum ResultEnum { ERROR(-1,"ERROR---------"), SUCCESS(100,"SUCCESS--------"), ; //這樣就說明我們具有ERROR和SUCCESS兩種狀態(tài),成功時返回100,SUCCESS private Integer code; private String msg; ResultEnum(Integer code, String msg) { this.code = code; this.msg = msg; } public Integer getCode() { return code; } public String getMsg() { return msg; } }
ResultUtil類代碼:
public class ResultUtil { //對應我們在Enum中設置的兩種狀態(tài) public static Result success(Object object){ Result result = new Result(); result.setCode(ResultEnum.SUCCESS.getCode()); result.setMsg(ResultEnum.SUCCESS.getMsg()); result.setData(object); return result; } public static Result error(Object object){ Result result = new Result(); result.setCode(ResultEnum.ERROR.getCode()); result.setMsg(ResultEnum.ERROR.getMsg()); result.setData(object); return result; } }
下面我們來編寫主體部分,在Controller中編寫,確定我們要以什么方式讓用戶調(diào)用,此處采用POST方式演示使用,大家也可以自己編寫GET方式。
@RestController @RequestMapping("/api") public class TestController { @PostMapping("/postTest") public Result postTest(@RequestBody boolean flag) throws Exception{ /* *調(diào)用時傳入一個參數(shù)flag,如果flag值不為true就返回成功數(shù)據(jù),否則返回失敗數(shù)據(jù) */ System.out.println("已進入api接口------"); System.out.println(flag); if(flag==true){ return ResultUtil.success("返回成功數(shù)據(jù)Congraduations!"); } return ResultUtil.error("抱歉sorry!"); } }
到這里我們已經(jīng)寫完我們的簡單API了,是不是看起來平平無奇?是的,我們的API只是演示使用,而API本身并不是什么特別高大上的東西,不過我們既然已經(jīng)寫完了,那我們就來試試看調(diào)用我們的API吧。
三、實現(xiàn)第三方調(diào)用
調(diào)用部分我們在另一個JAVA文件中調(diào)用,編寫一個用于調(diào)用API的類HTTPClientUtil
public class HttpClientUtil { public static String doPost(String pathUrl, String data){ OutputStreamWriter out = null; BufferedReader br = null; String result = ""; try { URL url = new URL(pathUrl); //打開和url之間的連接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //請求方法為"POST" conn.setRequestMethod("POST"); // 設置是否向httpUrlConnection輸出,因為這個是post請求,參數(shù)要放在http正文內(nèi),因此需要設為true, 默認情況下是false; conn.setDoOutput(true); // Post請求不能使用緩存 conn.setUseCaches(false); //設置請求屬性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); //維持長鏈接 conn.setRequestProperty("Content-Type", "application/json;charset=utf-8"); conn.connect(); //調(diào)用,獲取輸出流 out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); //發(fā)送請求參數(shù) out.write(data); out.flush(); //獲取URLConnection對象對應的輸入流 InputStream is = conn.getInputStream(); //構(gòu)造一個字符流緩存 br = new BufferedReader(new InputStreamReader(is)); String str = ""; while ((str = br.readLine()) != null){ result += str; } System.out.println(result); //關閉流 is.close(); //斷開連接,disconnect是在底層tcp socket鏈接空閑時才切斷,如果正在被其他線程使用就不切斷。 conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } return result; } }
在別的類中調(diào)用該方法就可以啦
//url需要與我們在api中設置的對應,后一個是傳參 String s = HttpClientUtil.doPost("http://localhost:12345/api/postTest","true"); System.out.println(s);
看一下返回結(jié)果,我們已經(jīng)成功實現(xiàn)了調(diào)用
再看一下傳入"false"時返回的結(jié)果
由此可見我們已經(jīng)實現(xiàn)了api中的小功能
在實際開發(fā)中很多時候傳參都會采用json的方式,只要另作修改即可,還有很多種調(diào)用第三方api的方法,這邊就不作贅述了!
總結(jié)
到此這篇關于從頭開始用JAVA創(chuàng)建一個自己的簡單API并實現(xiàn)第三方調(diào)用的文章就介紹到這了,更多相關JAVA創(chuàng)建API并第三方調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBatch數(shù)據(jù)讀取的實現(xiàn)(ItemReader與自定義讀取邏輯)
本文主要介紹了SpringBatch數(shù)據(jù)讀取的實現(xiàn), 文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-04-04深入淺析Mybatis與Hibernate的區(qū)別與用途
這篇文章主要介紹了Mybatis與Hibernate的區(qū)別與用途的相關資料,需要的朋友可以參考下2017-10-10