@lonu/stc
Version:
A tool for converting OpenApi/Swagger/Apifox into code.
3 lines (2 loc) • 3.54 kB
JavaScript
// this file is auto generated.
export default { "actionImport": "import Foundation\n<% if (it.imports.length) { %>\nimport <%= it.typeFileName %>\n<% } %>\nimport APIClient\n", "actionMethod": "<% /* API 方法注释 */ %>\n/// <%~ it.url %>\n<% if (it.summary) { %>\n/// <%~ it.summary %>\n<% } %>\n<% if (it.summary !== it.description) { %>\n<% if (it.summary && it.description) { %>\n///\n<% } %>\n<% if (it.description) { %>\n/// <%~ it.description %>\n<% } %>\n<% } %>\n\n<% if (it.deprecated) { %>\n@available(*, deprecated, message: \"This API is deprecated\")\n<% } %>\n<% /* API 方法 */ %>\npublic func <%= it.methodName %>(<% it.params.forEach((param, index) => { %>\n <%= param.name %>: <%= param.type %><% if (!param.required) { %>?<% } %><% if (index < it.params.length - 1) { %>,<% } %>\n<% }) %>) async throws -> <%= it.responseType %> {\n <% /* 处理路径参数 */ %>\n <% const pathParams = it.params.filter(p => p.category === 'path'); %>\n <% if (pathParams.length > 0) { %>\n let pathParams: [String: String] = [\n <% pathParams.forEach((param, index) => { %>\n \"<%= param.originalName || param.name %>\": String(<%= param.name %>)<% if (index < pathParams.length - 1) { %>,<% } %>\n <% }) %>\n ]\n let parsedUrl = \"<%= it.url %>\".parsePathParams(pathParams)\n <% } %>\n \n <% /* 处理请求参数 */ %>\n <% const bodyParams = it.params.filter(p => p.category === 'body' || p.category === 'formData'); %>\n <% const queryParams = it.params.filter(p => p.category === 'query'); %>\n <% if (bodyParams.length > 0 || queryParams.length > 0) { %>\n var params: [String: Any] = [:]\n <% bodyParams.forEach(param => { %>\n <% if (param.required) { %>\n params[\"<%= param.category %>\"] = <%= param.name %>\n <% } else { %>\n if let <%= param.name %> = <%= param.name %> {\n params[\"<%= param.category %>\"] = <%= param.name %>\n }\n <% } %>\n <% }) %>\n <% queryParams.forEach(param => { %>\n <% if (param.required) { %>\n params[\"<%= param.category %>\"] = <%= param.name %>\n <% } else { %>\n if let <%= param.name %> = <%= param.name %> {\n params[\"<%= param.category %>\"] = <%= param.name %>\n }\n <% } %>\n <% }) %>\n <% } %>\n \n let config = APIClientConfig(\n url: <% if (pathParams.length > 0) { %>parsedUrl<% } else { %>\"<%= it.url %>\"<% } %>,\n method: \"<%= it.method %>\"<% if (bodyParams.length > 0 || queryParams.length > 0) { %>,\n params: params<% } %>\n )\n \n return try await APIClient.shared.request(config, type: <%= it.responseType %>.self)\n}\n", "definitionBody": "<% if (it.propCommit) { %>\n /// <%~ it.propCommit %>\n\n<% } %>\n public let <%= it.prop.name %>: <%= it.propType %><% if (!it.prop.required) { %>?<% } %>", "definitionFooter": "<% if (it.props && it.props.some(prop => prop.originalName && prop.originalName !== prop.name)) { %>\n private enum CodingKeys: String, CodingKey {\n<% it.props.forEach(prop => { %>\n case <%= prop.name %> = \"<%= prop.originalName || prop.name %>\"\n<% }) %>\n }\n<% } %>\n}", "definitionHeader": "public struct <%= it.defName %>: Codable {", "enum": "<% if (it.isEnum) { %>\npublic enum <%= it.name %>: String, Codable {\n <% it.data.forEach(function(item) { %>\n case <%= it.convertValue(item).replace(/[^a-zA-Z0-9_]/g, '_') %> = \"<%= item %>\"\n <% }) %>\n}\n<% } else { %>\npublic typealias <%= it.name %> = <%= it.data %>\n<% } %>\n" };