日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

HTTP 轉(zhuǎn) SOFARPC 入門

更新時間:

本文介紹如何快速創(chuàng)建并發(fā)布一個 HTTP API 類型的 API 服務(wù),通過 API 網(wǎng)關(guān)進行協(xié)議轉(zhuǎn)換,使用 SOFARPC 協(xié)議將請求轉(zhuǎn)發(fā)到后端業(yè)務(wù)系統(tǒng)集群。

操作步驟

說明

建議您先閱讀 快速入門概述,了解 API 網(wǎng)關(guān)的角色及完整使用流程。

入門流程

示例工程

為方便快速體驗 API 網(wǎng)關(guān) HTTP 轉(zhuǎn)換 SOFARPC 的 API 服務(wù),您可以單擊此處下載本文涉及的 示例工程。

步驟一:編寫 SOFARPC Server

SOFARPC Server 的編寫沒有特殊的要求,按照 SOFARPC 的標準教程即可,此處簡單編寫一個 UserService。

說明

關(guān)于如何創(chuàng)建 SOFABoot 工程,參見 新建工程。

public interface SampleService {
    User message();
}

public class SampleServiceImpl implements SampleService {

    @Override
    public User message() {
        User user = new User();
        user.setAge(18);
        user.setName("tom");
        return user;
    }
}

public class User {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

將該 service 發(fā)布為 SOFARPC 服務(wù):

    <bean id="sampleService" class="com.alipay.gateway.endpoint.impl.SampleServiceImpl"/>

    <!-- 發(fā)布 RPC 服務(wù) -->
    <sofa:service ref="sampleService" interface="com.alipay.xxxxxxxx.SampleService">
        <sofa:binding.bolt/>
    </sofa:service>
說明

網(wǎng)關(guān)現(xiàn)已支持 HTTP Header 轉(zhuǎn) SOFARPC Baggage 透傳功能,在 HTTP-SOFARPC 的轉(zhuǎn)換中,把約定好的 HTTP Header 中的傳參形式加入到 Baggage 參數(shù)中:

request.getHeaderParams().put("baggage_context.透傳參數(shù)名稱","透傳數(shù)據(jù)")

然后在 SOFARPC 服務(wù)中,可以通過 Baggage 函數(shù)獲取對應(yīng)的參數(shù)值。

RpcInvokeContext context = RpcInvokeContext.getContext();
context.getRequestBaggage("透傳參數(shù)名稱")

步驟二:創(chuàng)建系統(tǒng)集群

  1. 進入金融分布式架構(gòu)控制臺。

  2. 左側(cè)導(dǎo)航欄單擊 API統(tǒng)一網(wǎng)關(guān) > API 發(fā)布 > 系統(tǒng)集群。

  3. 在系統(tǒng)集群列表頁面,單擊右上方的 創(chuàng)建系統(tǒng)集群 按鈕。

  4. 在新彈出窗口中,您需要配置以下信息:

    • 系統(tǒng)集群名稱:必填,用于識別系統(tǒng)集群。根據(jù)本示例,此處可使用 sofarpc。

    • 協(xié)議類型:支持 HTTP、SOFARPC。根據(jù)本示例,此處需選擇 SOFARPC。

    • 地址配置方式:選擇 手動配置,即手動配置系統(tǒng)集群的 IP 地址或域名。

    • IP地址/域名:格式為 地址:端口。本示例中,IP 地址使用 127.0.0.1,端口號使用 12200。

      • IP 地址或域名:

        • IP 地址格式為 (1~255).(0~255).(0~255).(0~255)。

        • 域名可以包含字母、數(shù)字或者半角的連接符(-),總共不超過 200 個字符。

      • 端口:HTTP 默認端口為 80,SOFARPC 默認端口為 12200。端口號范圍為 1-65535。

    • 描述:選填,用于描述系統(tǒng)集群的作用等,64 個字符以內(nèi),可為空。

      1

  5. 單擊 確定。

步驟三:創(chuàng)建 API 分組

  1. 在左側(cè)導(dǎo)航欄單擊 API 發(fā)布 > API 分組,進入分組列表。

  2. 單擊 API 分組列表右上方的 創(chuàng)建分組 按鈕。

  3. 在新彈出窗口中,輸入 API 分組信息:

    • 分組名稱:必填,用于識別 API 分組。支持英文字母、中文、數(shù)字、下劃線(_)、連接符(-),32 個字符以內(nèi)。本示例使用 sofarpc

    • 描述:選填,用于描述 API 分組的作用等,64 個字符以內(nèi),可為空。

      2

  4. 單擊 確定。

步驟四:創(chuàng)建并發(fā)布 API

  1. 在左側(cè)導(dǎo)航欄單擊 API 發(fā)布 > API 管理 頁,單擊列表右上方的 創(chuàng)建 API。

  2. 在新頁面中,選擇 HTTP API 類型,單擊 創(chuàng)建。

  3. 定義 API 步驟中,您需要配置以下信息:

    • API 分組:必選,選擇上一步創(chuàng)建的 API 分組。

    • API 名稱:必填,用于識別 API,支持英文字母、中文、數(shù)字、下劃線(_)、連接符(-),32 個字符以內(nèi)。本示例使用 sofarpc。

      說明

      同一個 API 分組下,API 名稱不能相同。

    • 描述:選填,用于描述 API 的作用等,64 個字符以內(nèi)。

    • API 授權(quán)應(yīng)用類型:必選,指定可以訂閱并調(diào)用該 API 的應(yīng)用類型。根據(jù)本示例,選擇 應(yīng)用。

    • 請求路徑:必填,針對應(yīng)用設(shè)置的請求資源的 URL,通過請求路徑可以定位到要請求的資源。根據(jù)本示例,輸入 /sofarpc。

    • 路徑匹配規(guī)則:選擇 絕對匹配,即調(diào)用時完全匹配以上填寫的路徑。詳見 路徑匹配規(guī)則

    • 方法:必填。后端調(diào)用 SOFARPC 的接口必須傳遞參數(shù),所以這里需要選擇 POST。請勿選擇 GET 方法。

      說明

      由于 SOFARPC 需要通過 payload 信息進行反序列化操作,而 GET 請求無法攜帶有效 payload,故當(dāng)前不支持 HTTP GET 轉(zhuǎn) SOFARPC 請求。

    • 報文類型:表示請求和響應(yīng)中的媒體類型信息。此處選擇 application/json。

    • 報文編碼:表示客戶端接受什么字符集的文本內(nèi)容。此處選擇 UTF-8

    • 安全認證:選擇 密鑰認證,表示訂閱應(yīng)用訪問授權(quán)的 API 時需要使用密鑰進行身份認證。

    • 請求參數(shù):可選,詳見 API 屬性說明 > 請求參數(shù)

    • 響應(yīng)參數(shù):可選,詳見 API 屬性說明 > 響應(yīng)參數(shù)。

      3

  4. 單擊 下一步,進入后端配置頁面,您需要選擇 后端配置類型 并輸入后端配置信息。根據(jù)本示例,需選擇 系統(tǒng)集群 并配置具體集群信息。

    • 協(xié)議類型:必選,表示網(wǎng)關(guān)接收到請求后轉(zhuǎn)發(fā)給的后端服務(wù)使用的通信協(xié)議類型。根據(jù)本示例,此處選擇 SOFARPC

    • 接口名稱:即 API 接口名稱,支持英文字母、數(shù)字、小數(shù)點(.)、冒號(:)、@,以小寫字母作為開頭。根據(jù)本示例,此處輸入 com.alipay.xxxxxxxx.SampleService。

    • 方法名:即 API 服務(wù)方法名,支持英文字母、數(shù)字組成,以字母作為開頭。根據(jù)本示例,此處輸入 message。

    • 超時時間:必填,API 請求超時時間,單位為毫秒(ms),保持默認即可。

    • 路由策略:必選,表示當(dāng)網(wǎng)關(guān)接收到語法后使用的路由策略。本例中選擇 根據(jù)請求路徑路由,即直接轉(zhuǎn)發(fā)。

    • 系統(tǒng)集群:必選,選擇步驟二創(chuàng)建的系統(tǒng)集群,即 sofarpc

      1

  5. 單擊 創(chuàng)建。

  6. 創(chuàng)建完成后,單擊 立即發(fā)布 發(fā)布該 API。

步驟五:創(chuàng)建應(yīng)用

  1. 在左側(cè)導(dǎo)航欄單擊 API 訂閱 > 應(yīng)用管理 頁,單擊列表右上方的 創(chuàng)建應(yīng)用。

  2. 創(chuàng)建應(yīng)用 窗口,選擇 應(yīng)用類型應(yīng)用。

  3. 輸入 應(yīng)用名稱,用于識別應(yīng)用。本例使用 hello。

    5

  4. 單擊 確定。

應(yīng)用添加完成后,訂閱者需在應(yīng)用詳情頁,獲取該應(yīng)用 APPID。獲取 APPID 后,需將 APPID 提供給想要訂閱的 API 的發(fā)布者,獲得該 API 的訪問授權(quán)。

步驟六:創(chuàng)建授權(quán)對象

  1. 在左側(cè)導(dǎo)航欄單擊 API 發(fā)布 > 授權(quán)管理 頁,單擊列表右上方的 創(chuàng)建授權(quán)對象。

  2. 創(chuàng)建授權(quán)對象 窗口中,配置訂閱方應(yīng)用的授權(quán)信息。

    • 應(yīng)用來源:必選。此處選 內(nèi)部系統(tǒng) 即可,表示授權(quán)給當(dāng)前租戶的當(dāng)前環(huán)境下的應(yīng)用訂閱。

    • 應(yīng)用名稱:輸入其上一步創(chuàng)建的應(yīng)用名稱,如 hello,系統(tǒng)會自動獲取其 APPID 與類型。

    • 所屬公司/部門:用于識別應(yīng)用所屬的公司或部門,可為空。

    • 描述:輸入對該授權(quán)對象的備注信息,可為空。

      11

  3. 單擊 確定。

步驟七:綁定授權(quán)對象

  1. API 管理 頁面,找到待訂閱 API,進入其詳情頁。

  2. 授權(quán)對象 標簽頁下,單擊 綁定授權(quán)對象

  3. 綁定授權(quán)對象 窗口中,找到剛剛創(chuàng)建的授權(quán)應(yīng)用。

    12

  4. 勾選該應(yīng)用,單擊 確定,完成 API 授權(quán)。

步驟八:編寫 API 調(diào)用代碼

  1. 獲取如下服務(wù)配置信息:

    • 在訂閱方應(yīng)用詳情頁獲取該應(yīng)用的密鑰(Access Key/Secret Key)。

      1

    • 在 API 詳情頁獲取該 API 的域名(host)、請求路徑(path)與方法(method)。

      11

  2. 編寫調(diào)用代碼,示例如下:

    說明

    如果 API 開啟了密鑰認證,您還需要在工程中配置相應(yīng)的 Access Key 和 Secret Key,推薦使用啟動參數(shù)和環(huán)境變量的形式。

    # 客戶端請求的ak、sk,就是應(yīng)用的密鑰信息
    gateway.accessKey=<SOFA_ACCESS_KEY_ID>
    gateway.secretKey=<SOFA_ACCESS_KEY_SECRET>
    apigateway.url=<yourGatewayURL>
    public class GatewayTest {
        private String subAppAccessKey = "${gateway.accessKey}";
    
        private String subAppSecretKey = "${gateway.secretKey}";
    
        private String gatewayUrl = "http://mvwmni87dqwc****.apigateway.inc.alipay.net";
    
        private ApiClient apiClient;
    
        @Before
        public void initClient() {
            // 初始化請求客戶端
            ApiSecretKey apiSecretKey = new ApiSecretKey(subAppAccessKey, subAppSecretKey);
            List<ApiSecretKey> secretKeys = new ArrayList<>();
            secretKeys.add(apiSecretKey);
            apiClient = new DefaultApiClient(gatewayUrl, secretKeys);
        }
    
        @Test
        public void testNoSignHttp() {
            ParamPostRequest request = new ParamPostRequest();
            request.setPath("sofarpc");
    
            // 是否對響應(yīng)進行簽名校驗
            request.setClientCheckSign(false);
    
            ApiResponse response = apiClient.execute(request);
    
            System.out.println(JSON.toJSONString(response));
        }
    }
  3. 發(fā)起調(diào)用后,可得出以下結(jié)果:

    {"body":"{\"name\":\"tom\",\"age\":18}"}