我正在尝试构建一个Moqui服务来从远程REST JSON api中提取和推送数据,但是它们要求我使用自定义标头进行身份验证,例如
X-App-Access-Token: {access_token}
我似乎无法在从服务调用API时找到添加此标头的方法吗?
<service verb="get" noun="Orders" type="remote-json-rpc" location="https://example.com/admin/orders.json">
<in-parameters>
<parameter name="marketplaceId"/>
<parameter name="accessToken"/>
</in-parameters>
<actions>
<service-call name="create#mantle.order.OrderHeader" in-map="context" out-map="context"/>
</actions>
</service>
感谢您的帮助!
萨姆
答案 0 :(得分:0)
首先注意一下:你的服务设置方式就是调用远程JSON RPC服务,通常最好有一个单独的服务调用这个服务和另一个本地服务来创建订单。对于像订单这样的更复杂的数据结构,通常最好调用其中一个服务(如OrderServices.create #Dorder,它创建OrderHeader和一个OrderPart),而不是简单的crud隐式定义的自动实体服务。
这样的本地服务设置是远程JSON-RPC服务的占位符,由RemoteJsonRpcServiceRunner.runJsonService()方法处理。该方法是静态的,您也可以直接调用它。它调用StupidWebUtilities.simpleHttpStringRequest()方法,这是HttpClient的东西,你需要添加一个自定义标题。
在当前代码中无法执行此操作。上面提到的两种方法可以扩展为支持像附加标题Map这样的东西,这可能不是一个坏主意,因为它可能在其他场景中有用。您也可以编写自己的方法或服务脚本片段来完成那些操作,这是相当简单的代码。