google-app-engine - 用于 dotnet core webapi 和 angular ui 的 GCP App Engine dispatch.yaml
问题描述
我有 URL 为“https://myprojectid.uc.r.appspot.com”的默认服务,然后我使用名为“mywebapi-poc”的服务部署了 .net core webapi,并可使用“https://mywebapi- poc-dot-myprojectid.uc.r.appspot.com"
现在我想使用类似这样的 dispatch.yaml 创建路由。"https://myprojectid.uc.r.appspot.com/mywebapi-poc" 和 "https://myprojectid.uc.r.appspot.com/mywebui-poc" 可以将所有 web api 请求路由到 mywebapi-poc服务和对 mywebui-poc 服务的所有 web ui 请求
我怎样才能使它工作?
dispatch:
- url: "myprojectid.uc.r.appspot.com/"
service: default
- url: "myprojectid.uc.r.appspot.com/mywebapi-poc/*"
service: mywebapi-poc
- url: "myprojectid.uc.r.appspot.com/mywebui-poc/*"
service: mywebui-poc
这样做之后,当我这样称呼它时https://myprojectid.uc.r.appspot.com/mywebapi-poc/api/v1/WeatherForecast
我得到 404
Angular Web UI 也是如此。第一个 index.html 页面加载,但之后没有加载后续的 Angular 应用程序文件。例如https://myprojectid.uc.r.appspot.com/mywebui-poc/用 200 响应加载 index.html 但https://myprojectid.uc.r.appspot.com/mywebui-poc/main.js没有'不加载,我得到 404。请注意,我之前用“/”遇到了路径问题,所以我在 index.html 中用“/mywebui-poc/”替换了它
使用“/”,我可以使单个 UI 服务与https://mywebui-poc-dot-myprojectid.uc.r.appspot.com一起使用
解决方案
App引擎按照dispatch.yaml中提到的顺序优先级编写调度规则。他们在文档中声明
调度规则依赖于顺序,并且只会应用与 URL 匹配的第一个规则。
在您的情况下, dispatch.yaml 中的第一个路由规则指向“默认”服务,并且域的特定部分 ( myprojectid.uc.r.appspot.com/
) 在所有路由中都是通用的。因此,您尝试使用此域访问的任何 URL 都将路由到默认服务。而是如下编写您的 dispatch.yaml ,它应该可以工作
dispatch:
- url: "myprojectid.uc.r.appspot.com/mywebapi-poc/*"
service: mywebapi-poc
- url: "myprojectid.uc.r.appspot.com/mywebui-poc/*"
service: mywebui-poc
dispatch.yaml 路由中省略的任何内容都会自动路由到默认服务
推荐阅读
- javascript - Moment js time zone date conversion issue
- flask - Flask app AttributeError: 'function' object has no attribute 'post'
- android - Android - Seekbar - Customize seekbar UI
- python - How to sort objects and attributes by date?
- openstack - Why Overview volume's usage different Real Volume Usage?
- socket.io - Socket.io keeps sending message to all client even client that has not joined room
- c# - Merge 3 lists using LINQ
- spring - Spring Boot / Spring AOP:AutoProxyRegistrar.class 无法打开,因为它不存在
- javascript - 循环 jQuery 脚本以获取元素列表
- python - 限制python日志文件的大小