Ошибка создания конечной точки API wso2: ресурс 404 не найден - PullRequest
1 голос
/ 29 октября 2019

Я пытаюсь создать REST API с помощью wso2 API_Manager для сбора данных из базы данных Postgres (цель обучения). Я борюсь с этим и хотел бы знать:

  • Я не правильно понял роли компонентов wso2 (новые техно и тема для меня)
  • или есть ошибка вкак я настроил менеджер.

Настройка системы

Я использовал официальный образ докера , добавил jar-файл postgres jdbc в /repository/components/lib/ и добавил следующее в/repository/conf/datasources/master-datasources.xml:

<datasource>
     <name>s0m3dAtabas3</name>
     <description>The db used for testing purposes</description>
     <definition type="RDBMS">
        <configuration>
           <url>jdbc:postgresql://sandor_postgres:5432/s0m3dAtabas3</url>
           <driverClassName>org.postgresql.Driver</driverClassName>
           <username>s0m3us3rfr0mdAtAMaj0r</username>
           <password>N0t5uchAs1mple1</password>
           <maxActive>80</maxActive>
           <minIdle>5</minIdle>
           <maxWait>60000</maxWait>
           <defaultAutoCommit>false</defaultAutoCommit>
           <testOnBorrow>true</testOnBorrow>
           <validationInterval>30000</validationInterval>
        </configuration>
     </definition>
</datasource>

Я убедился, что контейнер postgres с именем sandor_postgres доступен из wso2 с этими учетными данными. В этой базе данных у меня есть таблица с именем something. Изображение поставляется со следующими пользовательскими интерфейсами:

  • admin
  • publisher
  • store

Создание графического API

Сначала я следовал учебнику WorldBank , который казался кристально чистым (хотя я не совсем уверен, откуда поступили данные). Затем я попытался его адаптировать.

Шаг 1: Дизайн

Я использовал имя базы данных в качестве контекста (s0m3dAtabas3) v.1.0.0. Так как таблица называется something, шаблон URL, который я получаю в итоге: /s0m3dAtabas3/1.0.0/something

Шаг 2: Реализация

Здесь все начинает сбивать с толку. Независимо от пути к ресурсу, который я использую в Конечной точке (тип конечной точки REST), я получаю 404, и журналы не очень полезны

  • http://192.168.8.111:8280 -> 404
  • http://192.168.8.111:8280/something -> 404
  • http://192.168.8.111:9443/tried_several -> Invalid - ошибка подключения к бэкэнду
  • http://192.168.8.111:8243/tried_several -> Invalid - ошибка подключения к бэкэнду
INFO - InboundDBSyncRequestEvent Running DB sync task.
INFO - LogMediator STATUS = Message dispatched to the main sequence. Invalid URL., RESOURCE = /s0m3dAtabas3/1.0.0
INFO - CarbonAuthenticationUtil 'admin@carbon.super [-1234]' logged in at [2019-10-29 11:42:31,030+0000]
INFO - CarbonAuthenticationUtil 'admin@carbon.super [-1234]' logged in at [2019-10-29 11:42:31,197+0000]
INFO - LogMediator STATUS = Message dispatched to the main sequence. Invalid URL., RESOURCE = /s0m3dAtabas3/bullshit
INFO - CarbonAuthenticationUtil 'admin@carbon.super [-1234]' logged in at [2019-10-29 11:48:30,649+0000]
INFO - CarbonAuthenticationUtil 'admin@carbon.super [-1234]' logged in at [2019-10-29 11:48:30,790+0000]
INFO - LogMediator STATUS = Message dispatched to the main sequence. Invalid URL., RESOURCE = /
INFO - InboundDBSyncRequestEvent Running DB sync task.
INFO - LogMediator STATUS = Message dispatched to the main sequence. Invalid URL., RESOURCE = /

Я пропустил какой-то важный шаг настройки , или wso2 API Manager не является автономным компонентом Я думал, что это так и требуется другой компонент для достижения того, что я ищу?

1 Ответ

2 голосов
/ 30 октября 2019

Кажется, есть недоразумение в концептуальном плане.

Вот основная идея типичного решения для управления API.

У вас есть веб-сервис (REST, SOAP и т. Д.), Который необходимо предоставить в качестве управляемого API. Теперь вы можете подключить свой сервис к API Manager и представить его как управляемый API с безопасностью, ограничением скорости, управляемым жизненным циклом и т. Д.

В вашем случае, похоже, у вас нет такого сервиса, ноесть только таблица базы данных. Поэтому, прежде чем использовать API Manager для работы с вашим сервисом, вам сначала нужно представить свою таблицу как сервис. Для этой цели я бы предложил вам использовать компонент службы данных WSO2 EI 7.0.0 . Смотрите [1], как это сделать. Когда ваш сервис будет готов, вы можете использовать API Manager, чтобы представить его как управляемый API.

[1] https://ei.docs.wso2.com/en/latest/micro-integrator/use-cases/tutorials/sending-a-simple-message-to-a-datasource/

...