postgresql - wso2 API 端点创建失败 : 404 ressource not found

标签 postgresql rest wso2 wso2-api-manager

我正在尝试使用 wso2 API_Manager 创建一个 REST API从 Postgres 数据库中收集数据(学习目的)。我很难这样做,我想知道是否:

  • 我没有正确理解 wso2 组件的角色(对我来说是新技术和主题)
  • 或者我配置管理器的方式有误。

系统设置

我用了这个official docker image ,在 /repository/components/lib/ 中添加了 postgres jdbc jar,并在 /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>

我确保可以使用这些凭据从 wso2 访问名为 sandor_postgres 的 postgres 容器。在这个数据库中,我有一个名为something。该图像带有以下 UI:

  • 管理员
  • 出版商
  • 商店

图形API创建

我首先遵循了WorldBank 教程,它看起来非常清楚(尽管我不太确定数据的来源)。然后我尝试对其进行调整。

第 1 步:设计

我使用数据库名称作为上下文 (s0m3dAtabas3) v.1.0.0。由于该表名为 something,我最终得到的 url 模式是 /s0m3dAtabas3/1.0.0/something

第 2 步:实现

这就是事情开始令人困惑的地方。无论我在 Endpoint(端点类型 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 -> 无效 - 连接到后端时出错
  • http://192.168.8.111:8243/tried_several -> 无效 - 连接到后端时出错
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 管理器不是我认为的独立组件,需要另一个组件来实现我正在寻找的东西?

最佳答案

似乎在概念方面存在误解。

这是典型的 API 管理解决方案的基本思想。

您有一个 Web 服务(REST、SOAP 等),您需要将其公开为托管 API。现在,您可以使用 API Manager 将您的服务置于前端,并将其作为具有安全性、速率限制、托管生命周期等的托管 API 公开。

在你的情况下,你似乎没有这样的服务,但只有一个数据库表。因此,在使用 API Manager 为您的服务提供前端之前,您首先需要将您的表公开为服务。为此,我建议您使用 WSO2 EI 7.0.0 的数据服务组件。 .有关如何执行此操作的信息,请参见 [1]。准备好服务后,您可以使用 API 管理器将其公开为托管 API。

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

关于postgresql - wso2 API 端点创建失败 : 404 ressource not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58607263/

相关文章:

java - WSO2 ESB 如何对 Custom Mediator 的消息进行签名

angularjs - 将 PostgreSQL 数据库连接到使用 Angular-fullstack 生成的 Web 应用程序

rest - 将媒体项添加到现有相册时,Google 相册返回 "error 400: Request contains an invalid media item id. (INVALID_ARGUMENT)"

angularjs - Angular : show image from REST Service

WSO2 EI/ESB : For loop implementation

javascript - WSO2 内带有 Js 的 For 循环 - id 未定义

sql - 如何在 PostgreSQL 的 select 语句中用 STRING 值替换 BIT

postgresql - 在ansible变量中为变量添加引号

postgresql - Postgres 性能不会随着核心数量的增加而增加

javascript - Ember.js 数据冲突解决/冲突失败