Router和Interceptor配置
业务逻辑和数据的处理主要靠router和interceptor配置来实现。interceptor比router优先执行,因此interceptor可以处理一些公共逻辑。
Last updated
Was this helpful?
业务逻辑和数据的处理主要靠router和interceptor配置来实现。interceptor比router优先执行,因此interceptor可以处理一些公共逻辑。
Last updated
Was this helpful?
router配置目录在,interceptor配置目录在. 可在目录中写多个js文件,每个js文件导出一个配置对象,一个配置对象可以有多个router或interceptor配置。maty框架将自动加载并处理。
router和interceptor的配置项大多数是一致的,不一样的地方会特别说明。
route地址,可以设置为一个或英文逗号分隔的多个地址,服务正常启动后,该地址可以被访问。
当访问 /route/hello, /route,/router/hello/world三个不同的地址时,都将返回 view配置的 router/list 页面。:type是参数占位符,访问 /router/hello 时,ctx.param.type = hello
假如配置了两个路由地址分别为: /route/:type 和 /route/hi, 是不会产生冲突的,请求地址将优先匹配 无参路由/route/hi,其次才去匹配 带参路由 /route/:type。
可选项,类型String。
配置路由地址的请求方式,默认是 get 请求。可以配置为逗号间隔的多个请求方式。当遇到请求该路由地址时返回405错误,则需要检查method配置是否正确。
interceptor不支持该项配置,interceptor针对所有的请求方式。
可选项,类型String|Object|Array|Function。
api地址可使用前缀post: get: put: delete: 来指定该api的请求方式,否则默认ctx.method请求方式。
api地址一般为Sting的字符串,但也可以是Object类型。只有object类型的配置项支持配置数据名name,可用于多个api配置存在的命名冲突。object支持配置项如下:
当api配置为Array类型,array item可以是上述的String或Object类型,也可以是一个函数Function,该函数执行完返回字符串地址或配置对象。
当api为Function配置类型,接收参数为ctx,可以返回String或Array类型的配置。若返回空,则不做接口请求。示例如下:
可选,类型Boolean|Number|Function。
是否缓存api返回的数据。默认false表示不缓存,true表示永久缓存。
当值类型为Number,表示缓存时间的毫秒数。
当为Function时,接收ctx为参数,返回Boolean或Number。
可选,类型Number。
api请求的超时时间,为防止请求卡死在api无响应时。单位毫秒ms。
interceptor无此配置项。
可选,类型Boolean,默认false。
当router或interceptor配置了多个api地址,series决定了这么多api是并行请求还是串行请求。同时可以单独配置某个api是串行请求,而其他api是并行请求。串行请求的api结果,可以在并且请求api的handle方法中通过ctx.apiData来获取。
所以,若有api数据的依赖,可以设置series为true。
可选,类型String|Function。
转发请求,可以设置为一个api字符串地址(和上面的api配置项为字符串类型时的规则相同),或一个返回api字符串地址的函数,ctx作为参数传入该函数。
该配置具备排他性,设置了proxy值,则其他配置项均无效。
当不需要处理api数据时,可以使用该配置项,例如转发一个验证码图片地址,或下载文件等。api的响应内容和响应头都会原样转发到浏览器端。
interceptor无此配置。
可选,类型Boolean,默认false.
设置为true时,将在响应头上加上禁止缓存。
interceptor无此配置。
可选,类型Function。
需要定制传递给api的get参数时,可以在该配置中处理并返回一个query对象。
可选,类型Function。
需要定制传递给api的post/put参数时,可以在该配置中处理并返回一个body对象。
可选,类型Function
用于处理api返回的数据。第一个参数data是一个或多个api地址返回数据的集合。本质是ctx.apiData的引用.
interceptor的handle只有在api为string类型值时有效
可选,类型String|Function,默认值为ctx.path
当为Function类型时,接收ctx为参数,返回一个模板地址。
interceptor无此配置。
更多配置规则可以参考maty所使用的解析库文档:。
配置获取数据的后端api接口地址。可以是带域名的绝对地址,也可以是相对地址,然后用来处理。
api配置相对灵活,更多参见项目实践:
data的keys由api为object类型的name配置项优先决定,无name配置项时,由获取。
设置模板文件的地址,是相对于的相对地址。若使用,则还可以省略后缀,否则不可以省略后缀。比如 $viewDir/main/list.njk 模板文件,可以设置view: 'main/list' 。