В чем разница между WSO2 API и Proxy? - PullRequest
0 голосов
/ 06 октября 2018

Я придерживаюсь лабораторного курса WSO2 Enterprise Integrator Developer Advanced : https://wso2.com/training/enterprise-integrator-developer-advanced#request_training_enroll

, и у меня есть сомнения относительно различий между концепцией API и PROXY .

В этом лабораторном наборе есть пример, связанный с созданием пользовательского соединителя (вопрос не связан строго с темой соединителя).

В этом примере сначала создается и развертывается настраиваемый соединитель, затем создается и используется этот настраиваемый соединитель в этом прокси-сервере:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
    name="googlebooks_listVolume"
    transports="https,http"
    statistics="disable"
    trace="disable"
    startOnLoad="true">
    <target>
        <inSequence>
            <property name="searchQuery"
expression="json-eval($.searchQuery)"/>
            <googlebooks.listVolume>
                <searchQuery>{$ctx:searchQuery}</searchQuery>
            </googlebooks.listVolume>
            <respond/>
        </inSequence>
        <outSequence>
            <log/>
            <send/>
        </outSequence>
    </target>
    <description/>
</proxy>

Он работал нормально, и мой соединитель правильно вызывается.Но я спрашиваю, какова точная разница между ПРОКСИ, подобным этому, и API.

Я прочитал это: Разница между прокси-службой и службой API в wso2 Esb

Хорошо ... используя API, я могу определить несколько ресурсов, выполняющих различные операции CRUD, в то время как с прокси у меня есть одна точка входа.Дело в том, что с учетом этого, кажется, есть только одна разница в комфорте:

Мне нужно несколько операций CRUD?Я реализую API.Мне нужна одна изолированная операция?Я реализую прокси.

Но я думаю, что должны быть и другие ...

Я знаю, что API основаны на концепции REST .Я также читал, что прокси используется для предоставления веб-службы SOAP .

Это последнее утверждение мне не совсем понятно.Чтобы вызвать предыдущий PROXY (реализующий что-то вроде WS), я делаю:

curl -v -X POST -d "{"searchQuery":"rabbit"}" -H "Content-Type: application/json" http://localhost:8280//services/googlebooks_listVolume

Так что мне не кажется запрос SOAP , потому что я передаю JSON объект, содержащий мой параметр, который используется этим веб-сервисом.

Это также не чистый REST веб-сервис, но я думаю, что это определенно не SOAP service (что, насколько я знаю, использует WSDL XML-сообщение.

Итак, что я пропускаю?

1 Ответ

0 голосов
/ 10 октября 2018

Основное отличие такое же, как вы упомянули.Прокси-сервис - это в основном SOAP-сервис со своим собственным файлом WSDL.API считаются сервисами RESTful с ресурсами, отображаемыми на HTTP-глаголы.

Итак, как вы можете вызывать прокси с помощью приведенной выше команды curl и как она работает?

Причина в заголовке Content-Typeчто вы отправляете с вашим запросом curl.WSO2 EI или WSO2 ESB понимает различные заголовки типов контента и будет считывать контент в указанном формате (в данном случае JSON) и затем передавать его в базовый механизм передачи сообщений.Несмотря на то, что сервер принимает это как сообщение JSON, когда сообщение передается механизму передачи (который выполняет всю работу, связанную с передачей сообщений), он отправляется как мыльное сообщение внизу.Так что на самом деле на уровне посреднической службы прокси-служба будет по-прежнему получать мыльные сообщения, но на транспортном уровне мы можем отправлять любые типы содержимого поддержки.Это преобразование невидимо для пользователя, который вызывает службу прокси.Вот почему вы можете отправить JSON сообщение в прокси-сервис SOAP.

...