本文介绍如何通过Dapr使用HTTP调用非Dapr端点。
通过Dapr的服务调用API,您可以与使用或不使用Dapr的端点进行通信。使用Dapr调用非Dapr端点不仅提供了一致的API,还带来了以下Dapr服务调用的优势:
有时您可能需要调用非Dapr的HTTP端点,例如:
通过定义HTTPEndpoint
资源,您可以声明性地配置与非Dapr端点的交互方式。然后,您可以使用服务调用URL来访问非Dapr端点。或者,您可以直接在服务调用URL中使用非Dapr的完全限定域名(FQDN)端点URL。
在进行服务调用时,Dapr运行时遵循以下优先级顺序:
HTTPEndpoint
资源?http://
或https://
前缀的FQDN URL?appID
?下图概述了Dapr在调用非Dapr端点时的工作流程。
HTTPEndpoint
或FQDN URL定位服务B的位置,然后将消息转发给服务B。在与Dapr应用程序或非Dapr应用程序通信时,有两种方法可以调用非Dapr端点。Dapr应用程序可以通过以下方式之一调用非Dapr端点:
使用命名的HTTPEndpoint
资源,定义一个HTTPEndpoint
资源类型。请参阅HTTPEndpoint参考中的示例。
localhost:3500/v1.0/invoke/<HTTPEndpoint-name>/method/<my-method>
例如,使用名为"palpatine"的HTTPEndpoint
资源和名为"Order66"的方法:
curl http://localhost:3500/v1.0/invoke/palpatine/method/order66
使用指向非Dapr端点的FQDN URL。
localhost:3500/v1.0/invoke/<URL>/method/<my-method>
例如,使用名为https://darthsidious.starwars
的FQDN资源:
curl http://localhost:3500/v1.0/invoke/https://darthsidious.starwars/method/order66
AppID用于通过appID
和my-method
调用Dapr应用程序。阅读如何:使用HTTP调用服务指南以获取更多信息。例如:
localhost:3500/v1.0/invoke/<appID>/method/<my-method>
curl http://localhost:3602/v1.0/invoke/orderprocessor/method/checkout
使用HTTPEndpoint资源允许您根据远程端点的认证要求使用根证书、客户端证书和私钥的任意组合。
apiVersion: dapr.io/v1alpha1
kind: HTTPEndpoint
metadata:
name: "external-http-endpoint-tls"
spec:
baseUrl: https://service-invocation-external:443
headers:
- name: "Accept-Language"
value: "en-US"
clientTLS:
rootCA:
secretKeyRef:
name: dapr-tls-client
key: ca.crt
apiVersion: dapr.io/v1alpha1
kind: HTTPEndpoint
metadata:
name: "external-http-endpoint-tls"
spec:
baseUrl: https://service-invocation-external:443
headers:
- name: "Accept-Language"
value: "en-US"
clientTLS:
certificate:
secretKeyRef:
name: dapr-tls-client
key: tls.crt
privateKey:
secretKeyRef:
name: dapr-tls-key
key: tls.key
观看此视频以了解如何使用服务调用来调用非Dapr端点。