我正在尝试使用wso2 API_Manager创建REST API,以从Postgres数据库收集数据(学习目的)。我很难这样做,我想知道是否:
我使用了此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
的table。该图像带有以下UI:
我首先遵循了WorldBank教程,这看起来很清晰(尽管我不太确定数据来自何处)。然后,我试图适应它。
我将数据库名称用作上下文(s0m3dAtabas3
)v.1.0.0。由于该表称为something
,因此我最终得到的网址格式为/s0m3dAtabas3/1.0.0/something
这就是开始令人困惑的地方。不管我在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 '[email protected] [-1234]' logged in at [2019-10-29 11:42:31,030+0000]
INFO - CarbonAuthenticationUtil '[email protected] [-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 '[email protected] [-1234]' logged in at [2019-10-29 11:48:30,649+0000]
INFO - CarbonAuthenticationUtil '[email protected] [-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不是我认为的独立组件,并且需要另一个组件来实现我想要的?
似乎在概念上存在误解。
这里是典型的API管理解决方案的基本思想。
您有一个Web服务(REST,SOAP等),您需要将其公开为托管API。现在,您可以使用API Manager进行服务,并将其公开为具有安全性,速率限制,托管生命周期等的托管API。
在您的情况下,您似乎没有这样的服务,但是只有一个数据库表。因此,在使用API Manager进行服务前,您首先需要将表公开为服务。为此,建议您使用WSO2 EI 7.0.0的数据服务组件。参见[1]。准备好服务后,就可以使用API管理器将其公开为托管API。