注册一个 static 传输
一个 static 传输包含:Content/ 下,并通过 $PLUGIN_ROOT 引用它:
绑定一条路由
绑定到 static 传输的路由携带 URL 模式和访问策略:GET,或者完全不指定方法——为 static 路由声明其他任何具体方法都会被拒绝。关于路由和传输之间的一般关系,请参阅路由与传输。
挂载一个目录
当传输的source 是一个目录时,其路由的 pattern 必须以 / 结尾:
/my-service/assets 是另一个不同的精确路径;如果您需要在该路径上做重定向或返回索引页响应,请通过另一个传输添加单独的 HTTP 路由。
挂载单个文件
当传输的source 是单个文件时,其路由的 pattern 不能以 / 结尾:
/my-service/index.html/anything 的请求不会匹配此路由。
如果模式末尾的斜杠与 source 是文件还是目录不一致,内核会拒绝该注册,因此这类不匹配会在注册时就被捕获,而不会以运行时 404 的形式出现。
URL 路径规则
static 路由的模式遵循内核共享的路径模式规则:- 模式必须是以
/开头的绝对路径; - 不带尾部斜杠
/的模式匹配单个精确路径(对应单文件来源); - 以
/结尾的模式匹配该路径子树(对应目录来源);并且 /*不是一种通配符形式,会被拒绝。
/ 会被当作子树处理,可以匹配所有绝对请求路径。除非该服务本就打算提供应用程序的通用静态内容,否则请避免声明根路径。
访问控制
在内核提供该文件之前,会先应用路由的access 策略。请求还必须满足为该服务配置的服务级访问策略。如果任一策略拒绝该请求,文件都不会被提供。关于策略模型,请参阅访问控制。
冲突与匹配
static 路由与服务的其他 HTTP 路由共享同一片应用 URL 空间,无论这些路由背后是哪种传输。请保持每个服务的模式唯一。当另一个服务已经拥有相同路径时,内核会拒绝该路由;并且 static 路由与非 static 路由在同一路径上总是会发生冲突——一个路径要么作为静态内容提供,要么被动态处理,不能两者兼具。完整的冲突规则请参阅路由与传输。 当多条路由都可以匹配某个请求时,匹配最长的模式胜出。当 static 路由与被动态处理的路由匹配长度相同时,static 路由同样会胜出。请选择具体明确的模式,以避免某个 URL 的归属出人意料。打包检查清单
加载该服务之前,请确认:- 每个 static 传输的
source都位于包的Content/目录树内; source的值使用$PLUGIN_ROOT,而不是构建机器上的本地路径;- 以目录为来源的路由,其模式以
/结尾; - 以文件为来源的路由,其模式不以
/结尾;并且 - 包中包含这些传输所引用的全部文件。