我正在尝试使用 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
-> 404http://192.168.8.111:8280/something
-> 404http://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。
关于postgresql - wso2 API 端点创建失败 : 404 ressource not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58607263/