欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

教你從頭開始用JAVA創(chuàng)建一個自己的簡單API并實現(xiàn)第三方調(diào)用

 更新時間:2023年12月08日 15:45:23   作者:月色入戶  
在日常開發(fā)的時候,經(jīng)常會遇到需要調(diào)用別人的接口的場景,下面這篇文章主要給大家介紹了關于如何從頭開始用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(如POSTGET),而我們也要有相應的返回值,返回值基本用通用返回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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • LeetCode程序員面試題之無重復字符的最長子串

    LeetCode程序員面試題之無重復字符的最長子串

    Java計算無重復字符的最長子串是一種常見的字符串處理算法,它的目的是找出一個字符串中無重復字符的最長子串。該算法可以很好地解決一些字符串處理問題,比如尋找字符串中重復字符的位置,以及計算字符串中無重復字符的最長子串的長度。
    2023-02-02
  • SpringBatch數(shù)據(jù)讀取的實現(xiàn)(ItemReader與自定義讀取邏輯)

    SpringBatch數(shù)據(jù)讀取的實現(xiàn)(ItemReader與自定義讀取邏輯)

    本文主要介紹了SpringBatch數(shù)據(jù)讀取的實現(xiàn), 文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • 深入淺析Mybatis與Hibernate的區(qū)別與用途

    深入淺析Mybatis與Hibernate的區(qū)別與用途

    這篇文章主要介紹了Mybatis與Hibernate的區(qū)別與用途的相關資料,需要的朋友可以參考下
    2017-10-10
  • RabbitMQ冪等性與優(yōu)先級及惰性詳細全面講解

    RabbitMQ冪等性與優(yōu)先級及惰性詳細全面講解

    關于MQ消費者的冪等性問題,在于MQ的重試機制,因為網(wǎng)絡原因或客戶端延遲消費導致重復消費。使用MQ重試機制需要注意的事項以及如何解決消費者冪等性與優(yōu)先級及惰性問題以下將逐一講解
    2022-11-11
  • Java中遞歸原理實例分析

    Java中遞歸原理實例分析

    這篇文章主要介紹了Java中遞歸原理,實例分析了java中遞歸的原理與實現(xiàn)方法,以及使用過程中的相關技巧,需要的朋友可以參考下
    2015-05-05
  • IntelliJ IDEA 中必有得插件和配置

    IntelliJ IDEA 中必有得插件和配置

    這篇文章主要介紹了IntelliJ IDEA 中必有得插件和配置,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Spring 方法注解@Bean及配置類掃描路徑

    Spring 方法注解@Bean及配置類掃描路徑

    這篇文章主要介紹了Spring 方法注解@Bean及配置類掃描路徑,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2024-12-12
  • jdk動態(tài)代理源碼分析過程

    jdk動態(tài)代理源碼分析過程

    這篇文章主要介紹了jkd動態(tài)代理源碼分析過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Spring數(shù)據(jù)訪問模板化方法

    Spring數(shù)據(jù)訪問模板化方法

    今天小編就為大家分享一篇關于Spring數(shù)據(jù)訪問模板化,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java線程編程中Thread類的基礎學習教程

    Java線程編程中Thread類的基礎學習教程

    這篇文章主要介紹了Java線程編程中Thread類的基礎學習教程,Thread類包含諸多操作線程的方法,非常重要,需要的朋友可以參考下
    2015-12-12

最新評論