Я создал службу данных (DS) и выставляю данные как ресурс REST. и я мог бы успешно получить данные с помощью команды CURL, приведенной ниже.
curl -X GET -H "Accept: application/json" http://localhost:8280/services/TestDataService.HTTPEndpoint/Member/0
Шаблон ресурса REST API: Member / {MemberID} - Конечная точка DS
Ответ:
{"Members":{"Email":"example@test.com","FirstName":"Mad","MembershipCategory":"Gold","InsuranceType":"Health","LastName":"Tim"}}
Затем я захотел преобразовать этот ответ JSON в CSV, используя посредник WSO2 EI Data Mapper . Я знаю, что есть альтернативные способы достижения этого варианта использования с помощью других посредников или менеджера API WSO2.
Я создал еще один ресурс API в EI WSO2 с шаблоном
/ convertDetails / Member / {MemberID} - EI Endpoint
Во всяком случае, при следующих настройках я не смог получить правильный ответ, когда я вызываю ресурс REST API из REST-клиента.
Вот мой поток посредничества,
![enter image description here](https://i.stack.imgur.com/5qKun.png)
<?xml version="1.0" encoding="UTF-8"?>
<api context="/convertDetails" name="MemberDetailsConversion" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="GET" uri-template="/Member/{MemberID}">
<inSequence>
<log description="Request Log" level="full"/>
<send>
<endpoint>
<http method="get" uri-template="http://localhost:8280/services/TestDataService.HTTPEndpoint/Member/{uri.var.MemberID}"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<datamapper config="gov:datamapper/MemberDetailsMapping.dmc" inputSchema="gov:datamapper/MemberDetailsMapping_inputSchema.json" inputType="JSON" outputSchema="gov:datamapper/MemberDetailsMapping_outputSchema.json" outputType="CSV"/>
<log description="Response Log" level="full"/>
<respond/>
</outSequence>
<faultSequence/>
</resource>
</api>
Но все же, когда я вызываю конечную точку ресурса EI REST, http://localhost:8280/convertDetails/Member/0, это дает мне ОШИБКУ. Я извлек первые несколько строк стека ниже.
[2018-11-01 10:30:30,817] [EI-Core] ERROR - DBInOutMessageReceiver Error in in-out message receiver
DS Code: INCOMPATIBLE_PARAMETERS_ERROR
Nested Exception:-
javax.xml.stream.XMLStreamException: DS Fault Message: Error in 'CallQuery.extractParams', cannot find parameter with type:query-param name:MemberID
DS Code: INCOMPATIBLE_PARAMETERS_ERROR
Source Data Service:-
Name: TestDataService
Location: /Users/mad/Documents/wso2ei-6.3.0/wso2/tmp/carbonapps/-1234/1541088489969TestDataServiceProjectCompositeApplication_1.0.0.car/TestDataService_1.0.0/TestDataService-1.0.0.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: _getmember_memberid
Current Params: {}
Я предполагаю, что что-то пропустил в конфигурации. Буду признателен за вашу помощь в этом.