我正在使用httproouter Go库来实现一个REST API服务,并且我决定尝试使用ServeFiles来提供与我的API相关的一些模式文件。我注意到它使用Go的内置net/http包来提供静态文件。
它几乎完美地工作,除了一个小问题:RAML文件以内容类型text/plain
提供。但是,我注意到,我使用application/json
服务的JSON模式文件,因此很明显,静态文件服务中存在某种MIME类型关联。是否有一种方法可以将其配置为检测我的RAML文件,并使用内容类型application/raml+yaml
代替它?
我对RAML文件遵循.raml
文件扩展名的惯例,对JSON模式遵循.json
文件扩展名。
是的,有办法做到这一点。net/http
库在底层使用mime
库来检测内容类型。特别是,它使用TypeByExtension来确定文件扩展名是否与已知的内容类型相关联。要配置它,只需调用AddExtensionType,例如,在应用启动期间注册静态文件路由的地方。