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

配置從HTTP到Dubbo協議轉換

在分布式微服務場景下,后端的各個服務之間一般基于RPC框架相互調用,Dubbo就是一種常見的RPC框架。針對將一個Dubbo服務以RESTful風格向外暴露的場景,云原生網關提供從HTTP到Dubbo的協議轉換功能。本文介紹通過配置協議轉換使用HTTP請求訪問Dubbo服務。

說明

目前僅支持Java語言的Dubbo框架。

操作步驟

  1. 登錄MSE網關管理控制臺,并在頂部菜單欄選擇地域。

  2. 在左側導航欄,選擇云原生網關 > 網關列表,單擊目標網關名稱。

  3. 在左側導航欄,單擊路由管理,然后選擇路由頁簽。

  4. 在當前頁面單擊創建路由,配置相關參數,下表僅說明協議轉換配置項。創建路由的具體操作,請參見創建路由

    配置項

    描述

    Dubbo服務名

    Dubbo服務的完整服務名。

    服務版本

    Dubbo服務的版本,當后端服務沒有設置版本時此項默認為0.0.0。

    服務分組

    Dubbo服務的分組,當后端服務沒有設置分組時此項可以不填。

    方法映射

    說明

    方法映射指一個Dubbo方法的映射規則,通過單擊+方法映射您可以配置多條方法映射,方法映射包含以下配置項。

    Dubbo方法名

    Dubbo方法的完整名稱。

    HTTP方法

    設置HTTP請求中的Method參數。

    方法匹配路徑

    匹配Path參數,需要在前綴是的Path基礎上進行填寫。例如,Path為/dubboDemo,則此處需要在/dubboDemo的基礎上填寫方法的匹配路徑,例如/dubboDemo/hello

    Header透傳選型

    是否需要把HTTP請求的Header作為隱式參數(Attachment)透傳給后端的Dubbo服務。可選項:

    • 透傳所有Header

    • 不透傳Header

    • 透傳指定Header

      多個Key用英文逗號(,)分隔,例如content-length,content-type

    參數映射

    配置Dubbo方法的參數映射規則,Dubbo方法的參數以key-value的形式從HTTP請求中提取。可以配置多條參數映射規則,單擊+參數映射進行添加。

    • 入參位置:配置當前參數從HTTP請求中的什么位置來提取。

      • 請求參數:從HTTP請求的Query參數中提取

      • 請求頭:從HTTP請求的Header中提取

      • 請求路徑:從HTTP請求的Path中提取

      • 請求體:從HTTP請求的Body中提取

    • 入參位提取Key:配置當前參數對應的Key。

    • 后端參數類型:配置當前參數的完整類型名。按照規范,目前支持以下幾種Java類型。

      • java.lang.String

      • java.lang.Long

      • java.lang.Double

      • java.lang.Boolean

      • java.util.List

      • java.util.Map

      • 自定義類型,例如,org.apache.dubbo.samples.basic.api.DubboTest

    重要

    java.util.List、java.util.Map以及自定義類型只支持從Body中提取參數。

使用示例

通過幾組配置樣例介紹如何通過配置協議轉換功能,實現使用HTTP請求訪問Dubbo服務。

Dubbo服務接口

以下示例代碼為后端Dubbo服務的接口。

package com.alibaba.nacos.example.dubbo.service;
import java.util.List;
import java.util.Map;
public interface DemoService {
    String sayHello(String name);
    String echoList(List<String> input);
    String echoMap(Map<String, String> map);
    String echoPerson(Person p);
}

其中Person為自定義類型,定義如下所示。

package com.alibaba.nacos.example.dubbo.service;
import java.io.Serializable;
public class Person implements Serializable {
    public String name;
    public String second_name;
    public int age;
}

示例一:后端參數值從請求參數中提取,參數類型為java.lang.String

配置項

描述

Dubbo服務名

com.alibaba.nacos.example.dubbo.service.DemoService

服務版本

1.0.0

方法映射

Dubbo方法名

sayHello

HTTP方法

GET

方法匹配路徑

/dubboDemo/hello

Header透傳選型

透傳所有Header

參數映射

入參位置:請求參數

入參位提取Key:param1

后端參數類型:java.lang.String

在終端使用Curl命令發起一個HTTP請求驗證結果。

curl "http://xxx.xxx.xxx/dubboDemo/hello?param1=abcd"

示例二:后端參數值從請求頭中提取,參數類型為java.lang.String

配置項

描述

Dubbo服務名

com.alibaba.nacos.example.dubbo.service.DemoService

服務版本

1.0.0

方法映射

Dubbo方法名

sayHello

HTTP方法

GET

方法匹配路徑

/dubboDemo/hello

Header透傳選型

透傳所有Header

參數映射

入參位置:請求頭

入參位提取Key:param1

后端參數類型:java.lang.String

在終端使用Curl命令發起一個HTTP請求驗證結果。

curl "http://xxx.xxx.xxx/dubboDemo/hello" -H "param1: abcd"

示例三:后端參數值從請求路徑中提取,參數類型為java.lang.String

說明

入參位置為請求路徑時,需要在方法匹配路徑里配置對應的模板。

配置項

描述

Dubbo服務名

com.alibaba.nacos.example.dubbo.service.DemoService

服務版本

1.0.0

方法映射

Dubbo方法名

sayHello

HTTP方法

GET

方法匹配路徑

/dubboDemo/hello/{param1=*}

Header透傳選型

透傳所有Header

參數映射

入參位置:請求路徑

入參位提取Key:param1

后端參數類型:java.lang.String

在終端使用Curl命令發起一個HTTP請求驗證結果。

curl "http://xxx.xxx.xxx/dubboDemo/hello/abcd"

示例四:后端參數值從請求體中提取,參數類型為java.lang.String

配置項

描述

Dubbo服務名

com.alibaba.nacos.example.dubbo.service.DemoService

服務版本

1.0.0

方法映射

Dubbo方法名

sayHello

HTTP方法

POST

方法匹配路徑

/dubboDemo/hello

Header透傳選型

透傳所有Header

參數映射

入參位置:請求體

入參位提取Key:param1

后端參數類型:java.lang.String

在終端使用Curl命令發起一個HTTP請求驗證結果。

curl "http://xxx.xxx.xxx/dubboDemo/hello/" -X POST -d '{"param1": "abcd"}'

示例五:后端參數值從請求體中提取,參數類型為java.util.List

重要

java.util.List類型的參數僅支持從請求體中提取。

配置項

描述

Dubbo服務名

com.alibaba.nacos.example.dubbo.service.DemoService

服務版本

1.0.0

方法映射

Dubbo方法名

echoList

HTTP方法

POST

方法匹配路徑

/dubboDemo/echolist

Header透傳選型

透傳所有Header

參數映射

入參位置:請求體

入參位提取Key:param1

后端參數類型:java.util.List

在終端使用Curl命令發起一個HTTP請求驗證結果。

curl "http://xxx.xxx.xxx/dubboDemo/echolist/" -X POST -d '{"param1": ["abc", "def", "ghi"]}'

示例六:后端參數值從請求體中提取,參數類型為java.util.Map

重要

java.util.Map類型的參數僅支持從請求體中提取。

配置項

描述

Dubbo服務名

com.alibaba.nacos.example.dubbo.service.DemoService

服務版本

1.0.0

方法映射

Dubbo方法名

echoMap

HTTP方法

POST

方法匹配路徑

/dubboDemo/echomap

Header透傳選型

透傳所有Header

參數映射

入參位置:請求體

入參位提取Key:param1

后端參數類型:java.util.Map

在終端使用Curl命令發起一個HTTP請求驗證結果。

curl "http://xxx.xxx.xxx/dubboDemo/echomap/" -X POST -d '{"param1": {"key1": "value1", "key2": "value2", "key3": "value3"}}'

示例七:后端參數值從請求體中提取,參數類型為自定義類型

重要

自定義類型的參數僅支持從請求體中提取。

配置項

描述

Dubbo服務名

com.alibaba.nacos.example.dubbo.service.DemoService

服務版本

1.0.0

方法映射

Dubbo方法名

echoPerson

HTTP方法

POST

方法匹配路徑

/dubboDemo/echoperson

Header透傳選型

透傳所有Header

參數映射

入參位置:請求體

入參位提取Key:param1

后端參數類型:com.alibaba.nacos.example.dubbo.service.Person

在終端使用Curl命令發起一個HTTP請求驗證結果。

curl "http://xxx.xxx.xxx/dubboDemo/echoperson/" -X POST -d '{"param1": {"name": "Tom", "second_name": "John", "age": 21}}'