代码生成器让你告别重复枯燥的工作(一)

背景

在app开发过程中中经常遇到各种各样的网络请求,这些网络请求,需要我们编写网络请求发送相关的代码以及网络请求返回数据模型代码。这些代码没有太多的逻辑,但是手动的创建这些模型以及请求代码还是比较费时间的,尤其接口较多时,因此很早的时候就思考能否通过程序来完成这些工作,提高开发效率。

阶段性的成果

经过自己的努力,目前已经实现了一部分的代码自动生成,如:网络请求部分代码,网络请求返回模型等,并且自动添加到Xcode指定目录并添加文件引用

生成后的代码

下面我通过截图的形式给大家展示一下通过代码生成器生成的代码,主要原则就是尽可能的通用。

Codable模型代码

基本数据类型,自定义模型都是支持的,这些类型 都是根据接口文档中的类型自动转换的,准确性高,而且接口文档中的注释也会自动的进行匹配填充,另外大家看到文件名,作者,创建时间,都是根据配置自动生成的和通过Xcode创建文件一模一样

SmartCodable模型代码
Moya框架请求代码

网络请求相关的代码注释里有该接口的文档链接地址,接口描述,以及接口请求所需参数,以及具体参数的注释说明。接口请求path,参数拼接处理等,可以说是非常详细。

Alamofire框架请求代码
YYModel模型代码

可能有些小伙伴还在使用OC,我这边也提供OC的支持,网络请求返回模型使用YYModel来实现,具体如下:

YTKNetwork框架请求代码

使用教程

接下来我通过截图的形式大家详细详细讲解下代码生成器的具体使用步骤

选择api网站类型

红色框框里可以选择api网站类型,目前已完全支持yapi,swagger后续也会支持,如果还有其他的api文档网站想要支持的可以和我联系。

输入某个api文档的具体网址

某个具体API手动输入,复制粘贴都是可以的,如果勾选了记住账号密码,输入网址后会自动填充之前输入过的账号,密码。

输入api文档网站的账号密码

由于api文档网站都需要账号密码,因此需要使用到账号密码进行访问才能获取到接口文档里的信息,软件只是使用账号密码获取接口文档信息,未做其他用途。还请大家放心。

设置记住账号密码

记住账号密码是方便开发者,不用每次都输入账号密码,账号密码会加密后存储在本地,取消记住账号密码,即可把本地存储的账号密码删除。本地存储的账号密码,仅用于获取接口文档信息,未做其他用途。

设置生成代码的语言

选择生成的代码语言,可以在红框的地方选择,目前支持swift,OC。

选择网络请求框架

选择网络请求框架可以在红框处选择,目前支持的Moya,Alamofire,YTKNetwork,如果还想添加其他的大家可以和我联系。特别注意:当使用Moya请求库的时候,需要在自己的文件里参考模板文件加入标记字符方便代码生成器识别。模版文件如下: 红色框里面###xxx###的注释内容都是用来让代码生成器来进行识别定位的,大家可以参考模版文件,把这些特殊符号放到自己的文件里的指定的位置。模版代码文件源码:

swift 复制代码
//
//  CPAPI.swift
//  Code producer demo
//
//  Created by admin on 2025/02/08
//

import Foundation
import Moya
import Alamofire

enum CPAPI {
//    ###EnumCase###
}

extension CPAPI: TargetType {
//    网络请求方法
    var method: Alamofire.HTTPMethod {
        switch self {
//    ###RequestMethodStart###
//    ###RequestMethodEnd###
            default:
                break
            }
        }
    }

    var parameterEncoding: ParameterEncoding {
        switch self {
//    ###ParameterEncodingStart###
//    ###ParameterEncodingEnd###
            default:
                break
            }
        }
        return JSONEncoding.default
    }
    
    ///各个请求的具体路径
    var path: String {
        switch self {
//     ###RequestPath###
            default:
                break
            }
        }
    }
    
    ///请求任务事件(这里附带上参数)
    var task: Task {
        var parmeters: [String: Any] = [:]
        switch self {
//            ###RequestTask###
            default:
                break
            }
        }
        return .requestCompositeParameters(bodyParameters: parmeters, bodyEncoding: parameterEncoding, urlParameters: [String: Any]())
    }
    
    
}
选择数据模型解析工具

红色框可以选择模型转换工具,主要有Codable,SmartCodable,YYModel

设置Xcode工程目录

点击红框中的按钮来选中Xcode工程文件,类似下图这样的 选中后右边的输入框就能显示具体的路径了,当然也可以直接把复制的路径信息粘贴到输入框中

选择网络请求代码生成路径

选中后右边的输入框就能显示具体的路径了,当然也可以直接把复制的路径信息粘贴到输入框中 需要注意的是,当网络请求工具为Moya时,此时选择的路径是一个swift文件,而不是文件夹

选择网络请求返回数据模型生成路径

选中后右边的输入框就能显示具体的路径了,当然也可以直接把复制的路径信息粘贴到输入框中

设置代码前缀

代码前缀主要是用来作为类名,结构体名。

设置作者名

作者是每个源代码文件顶部注释那里 created by xxx,达到和手动创建文件一样的效果。

软件下载地址

github.com/xindizhiyin...

相关推荐
京东云开发者1 小时前
探索Playwright:前端自动化测试的新纪元
程序员
京东云开发者1 小时前
接单流程设计探索
程序员
京东云开发者1 小时前
【积微成著】性能测试调优实战与探索(存储模型优化+调用链路分析)
程序员
阿里嘎多学长1 小时前
2026-01-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
小酒星小杜4 小时前
在AI时代,技术人应该每天都要花两小时来构建一个自身的构建系统-Input篇
前端·程序员·架构
程序员Agions5 小时前
程序员武学修炼手册(三):融会贯通——从写好代码到架构设计
前端·程序员·强化学习
zhouzhouya5 小时前
我和TRAE的这一年:从"看不懂"到"玩得转"的AI学习进化史
前端·程序员·trae
SimonKing5 小时前
基于Netty的TCP协议的Socket客户端
java·后端·程序员
代码小学僧5 小时前
普通前端仔的 2025 : 年终总结与 AI 对我的影响
前端·程序员·ai编程
自由生长202415 小时前
JNI是什么?
程序员