raml2swagger.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. var converter = require('oas-raml-converter');
  2. var fs = require('fs');
  3. var raml10ToOas20 = new converter.Converter(converter.Formats.RAML, converter.Formats.OAS20);
  4. const tagsMap = {
  5. '/api/assignment/code': '代码作业',
  6. '/api/assignment/course/{courseId}/code': '代码作业',
  7. '/api/assignment/student/course/{courseId}/code': '代码作业',
  8. '/api/assignment/teacher/course/{courseId}/code' : '代码作业',
  9. '/api/assignment/teacher/code' : '代码作业',
  10. '/api/assignment/student/code' : '代码作业',
  11. '/api/codehw': '代码作业',
  12. '/api/statistics' : '结果统计',
  13. '/api/user': '用户',
  14. '/api/course': '课程',
  15. '/api/question': '问题',
  16. '/api/group': '小组',
  17. }
  18. raml10ToOas20.convertFile('./index.raml')
  19. .then(function(json) {
  20. // 接口名称
  21. json = json.replace(/operationId/g, 'summary');
  22. json = JSON.parse(json)
  23. // tags支持
  24. tags = Object.values(tagsMap).map(v => ({name: v, description: v}));
  25. json['tags'] = tags;
  26. Object.keys(json.paths).forEach(uri => {
  27. uriTags = Object.keys(tagsMap).filter(k => uri.startsWith(k)).map(k => tagsMap[k]);
  28. Object.keys(json.paths[uri]).forEach(method => {
  29. json.paths[uri][method]['tags'] = uriTags;
  30. });
  31. });
  32. fs.writeFileSync('./swagger.json', JSON.stringify(json, null, ' '));
  33. })
  34. .catch(function(err) {
  35. console.error(err);
  36. });