На самом деле, вы не можете получить имя арендатора напрямую, потому что согласно коду мы не передаем домен арендатора как отдельное свойство в контексте сообщения.Но вы можете найти это имя клиента в свойстве «TransportInURL», которое содержит контекст сообщения axis2.Это значение свойства «TransportInURL» сформировано, как показано ниже.
- TransportInURL: / t / tenant_domain или tenant_name / api context part
- например: /t/wso2.com/abc/v1
Затем, чтобы удовлетворить ваши требования, вы можете использовать функцию подстроки с посредником свойства, чтобы изолировать имя арендатора, как показано ниже.
<property name="tenant" expression="fn:substring-before(fn:substring-after($axis2:TransportInURL, '/t/'), '/')"/>
Например:
- Ввод: /t/wso2.com/abc/v1
- Результат: wso2.com
Пример API: вы можете увидеть, как можно использовать это свойство для получения имени арендатора.
<api xmlns="http://ws.apache.org/ns/synapse" name="ABC" context="/t/wso2.com/abc" version="v1" version-type="context">
<resource methods="GET">
<inSequence>
<property name="tenant" expression="fn:substring-before(fn:substring-after($axis2:TransportInURL, '/t/'), '/')"/>
<log level="full">
<property name="tenantValue" expression="get-property('tenant')"/>
</log>
<send>
<endpoint>
<http uri-template="http://www.mocky.io/v2/5c985f352f000064009f2f91"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
</resource>
</api>