Apiary无法调用本地服务器接口,请求跳转至远程地址求助
Apiary Preview 无法调用本地API服务器的解决方法
问题原因
Apiary Preview 默认不会直接转发请求到本地API服务,未配置时会将请求发送到Apiary远程管理服务器(https://jsapi.apiary.io/apis/null/http-transactions/),该服务器不存在你的本地API资源,因此返回404错误。
解决步骤
1. 在API Blueprint中配置本地服务地址
在你的docs/api.apib文件开头添加HOST指令,指定本地dart-frog服务的基础URL:
FORMAT: 1A HOST: http://192.168.0.1:8080 # NewstoolKit API # 以下是你的API定义内容 ...
配置后,Apiary会将所有"Call Resource"的请求转发到这个地址。
2. 启动Apiary时启用本地代理模式
如果上述HOST配置未生效,启动Apiary时添加--mock参数,强制启用本地代理:
apiary preview --path docs/api.apib --watch --port=8090 --host=0.0.0.0 --mock
该参数会让Apiary直接代理请求到你定义的HOST地址,而非远程服务器。
3. 配置dart-frog的CORS支持
由于Apiary运行在8090端口,本地服务在8080端口,跨域请求会被浏览器拦截。需要在dart-frog中添加CORS中间件:
在项目的main.dart中修改middleware:
import 'package:dart_frog/dart_frog.dart'; import 'package:dart_frog_web_socket/dart_frog_web_socket.dart'; Handler middleware(Handler handler) { return handler .use(requestLogger()) .use(cors( allowedOrigins: ['http://192.168.0.1:8090'], allowedMethods: ['GET', 'POST', 'PUT', 'DELETE'], allowedHeaders: ['Content-Type'], )); }
这样可以允许Apiary页面发起的跨域请求访问本地服务。
完成以上配置后,点击Apiary中的"Call Resource"即可正常调用本地dart-frog的API接口。
内容的提问来源于stack exchange,提问作者puzzled
相关产品推荐
相关产品推荐

