域名
Endpoint指的是请求服务的网络域名,比如api.webull.hk
对应HTTP API的服务。
不同的服务会使用不同的域名,比如quotes-api.webull.hk
对应行情数据服务。
region_id
也和Endpoint有关,比如上面两个域名所对应的region_id
都是hk(代表香港)。
在使用SDK的过程中,默认已经对Endpoint实现了管理,开发者一般只需要正确设置region_id即可,无需单独设置Endpoint。
HTTP API
用户自定义Endpoint的不同方式
- Python
- Java
- 通过ApiClient进行设置,全局生效,示例代码如下
from webullsdkcore.client import ApiClient
client = ApiClient(app_key="<your_app_key>", app_secret="<your_app_secret>", region_id="<region_id>")
client.add_endpoint("<region_id>", "<endpoint>")
- 通过Request进行设置,只对当前Request生效,示例代码如下
from webullsdkmdata.request.get_instruments_request import GetInstrumentsRequest
request = GetInstrumentsRequest()
request.set_endpoint("<endpoint>")
- 通过EndpointResolver进行设置,全局生效,示例代码如下
EndpointResolver.getDefault().addEndpoint("<region_id>", ApiModule.API, "<endpoint>");
- 通过ApiConfig进行设置,只对当前Client/Service实例生效,示例代码如下
HttpApiConfig apiConfig = HttpApiConfig.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.regionId("<region_id>")
.endpoint("<endpoint>")
.build();
// HttpApiClient client = new HttpApiClient(apiConfig);
TradeApiService apiService = new TradeHttpApiService(apiConfig);
- 通过HttpRequest进行设置,只对当前Request生效,示例代码如下
HttpApiConfig apiConfig = HttpApiConfig.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.regionId("<region_id>")
.build();
HttpApiClient client = new HttpApiClient(apiConfig);
HttpRequest request = new HttpRequest("<endpoint>", "/trade/instrument", Versions.V1, HttpMethod.GET);
Map<String, Object> params = new HashMap<>();
params.put("instrument_id", instrumentId);
request.setQuery(params);
InstrumentInfo instrumentInfo = client.request(request).responseType(InstrumentInfo.class).doAction();
行情订阅
- Python
- Java
- 用户通过设定api_endpoint参数,可以实现自定义gRPC API的Endpoint,示例代码如下
from webullsdkmdata.quotes.subscribe.default_client import DefaultQuotesClient
quotes_client = DefaultQuotesClient(
"<your_app_key>", "<your_app_secret>", "<region_id>", api_endpoint="<api_endpoint>")
- 用户通过设定host和port参数,可以实现自定义MQTT协议的Endpoint,示例代码如下
from webullsdkmdata.quotes.subscribe.default_client import DefaultQuotesClient
quotes_client = DefaultQuotesClient(
"<your_app_key>", "<your_app_secret>", "<region_id>")
quotes_client.connect_and_loop_start(host="<host>", port="<port>")
用户通过设定host, port和apiClient参数,可以实现自定义gRPC API或MQTT协议的Endpoint,示例代码如下
QuotesApiClient quotesApiClient = QuotesApiClient.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.host("<api_endpoint>")
.port(443)
.build();
QuotesSubsClient quotesSubsClient = QuotesSubsClient.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.host("<host>")
.port(8883)
.apiClient(quotesApiClient)
.build();
交易事件订阅
用户通过设定host和port参数,可以实现自定义gRPC协议的Endpoint,示例代码如下
- Python
- Java
from webullsdktradeeventscore.events_client import EventsClient
events_client = EventsClient("<your_app_key>", "<your_app_secret>", region_id="<region_id>", host="<host>", port="<port>")
EventClient client = EventClient.builder()
.appKey("<your_app_key>")
.appSecret("<your_app_secret>")
.host("<host>")
.port(443)
.build();