WSO2 APIM 4.0调用API报404:请求资源不可用排查求助
问题:API Manager调用API返回404错误,直接调用Micro Integrator正常
操作背景
- API Manager上有一个已发布且可用的API
- 在Integration Studio中修改API代码后导出CAR包,部署到Micro Integrator 7.1.0并重启服务
- 在API Manager中执行保存并部署操作发布API新版本(此前多次操作均正常)
API端点配置
配置为两个服务URL的负载均衡:
http://10.10.10.1:8290/demo-api/http://10.10.10.2:8290/demo-api/
调用测试对比
直接调用Micro Integrator(正常)
执行以下curl命令:
curl -X GET http://10.10.10.1:8290/demo-api/getCountriesLookup
可正常返回结果。
通过API Manager调用(返回404)
执行以下curl命令:
curl -X GET https://am.mydomain:443/demo/1.0.0/getCountriesLookup
返回404错误响应:
{ "code": "404", "type": "Status report", "message": "Not Found", "description": "The requested resource is not available." }
API Manager日志异常
TID: [-1] [] [2022-12-14 10:53:40,921] INFO {org.apache.synapse.transport.passthru.SourceHandler} - Writer null when calling informWriterError TID: [-1234] [] [2022-12-14 10:53:41,129] INFO {org.apache.synapse.mediators.builtin.LogMediator} - STATUS = Message dispatched to the main sequence. Invalid URL., RESOURCE = /demo/1.0.0/getCountriesLookup, HEALTH CHECK URL = /demo/1.0.0/getCountriesLookup TID: [-1] [] [2022-12-14 10:53:42,270] ERROR {org.apache.synapse.transport.passthru.SourceHandler} - HttpException occurred org.apache.http.ProtocolException: Invalid request line: GET / at org.apache.http.impl.nio.codecs.AbstractMessageParser.parse(AbstractMessageParser.java:209) at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection$LoggingNHttpMessageParser.parse(LoggingNHttpServerConnection.java:410) at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection$LoggingNHttpMessageParser.parse(LoggingNHttpServerConnection.java:384) at org.apache.http.impl.nio.DefaultNHttpServerConnection.consumeInput(DefaultNHttpServerConnection.java:262) at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection.consumeInput(LoggingNHttpServerConnection.java:114) at org.apache.synapse.transport.passthru.ServerIODispatch.onInputReady(ServerIODispatch.java:82) at org.apache.synapse.transport.passthru.ServerIODispatch.onInputReady(ServerIODispatch.java:39) at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114) at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162) at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337) at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315) at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276) at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: org.apache.http.ParseException: Invalid request line: GET / at org.apache.http.message.BasicLineParser.parseRequestLine(BasicLineParser.java:302) at org.apache.http.impl.nio.codecs.DefaultHttpRequestParser.createMessage(DefaultHttpRequestParser.java:117) at org.apache.http.impl.nio.codecs.DefaultHttpRequestParser.createMessage(DefaultHttpRequestParser.java:50) at org.apache.http.impl.nio.codecs.AbstractMessageParser.parseHeadLine(AbstractMessageParser.java:156) at org.apache.http.impl.nio.codecs.AbstractMessageParser.parse(AbstractMessageParser.java:207) ... 14 more
关键异常点
API Manager日志中显示的RESOURCE为/demo/1.0.0/getCountriesLookup,而非预期的/demo-api/1.0.0/getCountriesLookup,不清楚该上下文来源。
更新内容
- 已添加API端点配置截图
- API Manager测试控制台提供的调用命令为:
curl -X 'GET' \ 'https://am.mydomain:443/demo/1.0.0/getCountriesLookup' \ -H 'accept: */*'
内容的提问来源于stack exchange,提问作者Mahmoud Saleh
相关产品推荐
相关产品推荐

