node-web-mvc
Version:
node spring mvc
41 lines (40 loc) • 1.68 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const openapi_1 = __importDefault(require("../openapi"));
const ByteArrayResource_1 = __importDefault(require("../../servlets/resources/ByteArrayResource"));
const MediaType_1 = __importDefault(require("../../servlets/http/MediaType"));
class OpenApiResolver {
/**
* 初始化swagger文档配置
*/
static initializeResource(registry, enable) {
if (!enable)
return;
// 如果使用swagger
const swaggerLocation = path_1.default.join(__dirname, '../../../swagger-ui/');
registry
.addResourceHandler('/swagger-ui/openapi.json')
.resourceChain(false)
.addResolver(new OpenApiResolver());
registry
.addResourceHandler('/swagger-ui/**')
.addResourceLocations(swaggerLocation)
.setCacheControl({ maxAge: 0 });
}
async resolveResource(request, requestPath, locations, next) {
const builder = new openapi_1.default();
const meta = builder.build(request.contextPath);
const mediaType = MediaType_1.default.APPLICATION_JSON;
const buffer = Buffer.from(JSON.stringify(meta, null, 2));
const resource = new ByteArrayResource_1.default(buffer, mediaType);
return resource;
}
resolveUrlPath(resourcePath, locations, chain) {
return chain.resolveUrlPath(resourcePath, locations);
}
}
exports.default = OpenApiResolver;