1. 程式人生 > 實用技巧 >關於呼叫三方平臺介面與推送介面的總結<二>(2020.7.27)

關於呼叫三方平臺介面與推送介面的總結<二>(2020.7.27)

前言:本篇部落格是接著上篇總結寫的,想了解怎麼對接第三方平臺介面的同學可以看我上一篇部落格,地址是https://www.cnblogs.com/alanturingson/p/13377500.html,本篇將介紹如何封裝介面給第三方平臺來呼叫。

正文開始:

既然是對接快遞平臺,那麼無非就有兩種對接的模式。第一種,是本方去呼叫第三方的介面,例如快遞查詢介面、路由查詢介面、路由訂閱介面等。這些都需要本方主動去請求三方提供的url,按照三方要去的請求引數來推送引數獲得資料。第二種,與第一種相反,是三方調我們的介面。例如路由推送介面等。這種模式需要本方封裝一個介面,並提供地址給第三方,然後第三方來調我們自己的介面從而實現我們封裝的介面實現的邏輯。

今天我們說說第二種,三方呼叫本方介面。

二、三方來呼叫本方介面(注:本文以申通路由推送介面為例,可以參照申通官方文件https://open.sto.cn/#/apiDocument/STO_TRACE_PLATFORM_PUSH,以便理解)

在上一篇中,我們介紹呼叫三方介面的時候,是我們按照三方的要求來,按照他給的引數進行入參請求。那麼我們寫介面給三方來調,是不是就需要三方完全按照我們的要求來呢?其實並不是,為了讓三方呼叫我們介面,我們需要首先去與三方溝通,拿到他們的請求引數格式,按照他們請求引數的格式,來設計我們的介面(ps:沒錯,就是這麼的卑微,畢竟三方才是爸爸0^0)。在拿到三方的標準格式後,我們就可以設計介面了。與主動呼叫在manager層寫程式碼不同,被動接受呼叫,需要從manager層到service層再到controller層,三層設計封裝然後接口才算完成。

1.manager層

在manager層,我們依然可以使用呼叫三方介面的apimanager類,以及三層請求與三層返回類,這裡需要改的是請求與返回的第三層類,具體程式碼如下:

1.1申通路由推送介面請求類:

@EqualsAndHashCode(callSuper = true)
@Data
public class StoTracePushRequest extends BaseStoRequest<StoTracePushResponse> {

    @Override
    public String apiName() {
        return getApiName();
    }

    
public static String getApiName() { return "STO_TRACE_PLATFORM_PUSH"; } @Override public String toAppKey() { return null; } @Override public Class<StoTracePushResponse> getResponseClass() { return StoTracePushResponse.class; } /** * 運單號 */ private String waybillNo; /** * 訂單號 */ private String linkCode; /** * 軌跡資訊 */ private StoTracePushInfo trace; }

1.2 申通路由推送介面返回類:

public class StoTracePushResponse extends BaseStoResponse<StoTracePushDTO> {
}

這裡的StoTracePushDTO 類,是申通api文件裡註明的響應引數,大家可以依據具體的規範設計,程式碼我也放出來吧:

@Data
public class StoTracePushDTO {

    /**
     * 運單號
     */
    private String waybillNo;

    /**
     * 是否需要重試: 用於正常收到請求,但程式處理異常時,可以傳true,不管success是true還是false,申通側都會重新推送;
     */
    private Boolean needRetry;
}

那麼manager層的設計就到這裡了,apiManeger類的話在上一篇部落格裡面有發出來,這裡不做任何改動可以直接呼叫。

2.Service層 (任務來了,下次在更)