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

背景

在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...

相关推荐
大侠咕咚5 小时前
表格即文档,钉钉这个功能不错
程序员
redreamSo6 小时前
从“奶妈”的消失看“母职外包”:自由是建立在别人无法选择的人生之上
程序员
文心快码BaiduComate10 小时前
文心快码Zulu,如何成为我眼里的“AI编码战士”
程序员
KaneLogger10 小时前
AI模型与产品推荐清单20250709版
人工智能·程序员·开源
G探险者12 小时前
语言只是压缩包:人类交流为何如此低效?
程序员
掘金安东尼14 小时前
蔚来 600 亿研发成本,信还是不信。。
面试·程序员·github
考虑考虑15 小时前
go中的Map
后端·程序员·go
redreamSo16 小时前
AI Daily | AI日报:微信支付 MCP,开启“对话即交易”时代; 镁伽科技:机器人独角兽冲刺IPO; 北大团队突破存算一体排序难题
程序员·aigc·资讯
AI大模型17 小时前
大模型炼丹术(二):从离散的token IDs到具有语义信息的embedding
程序员·llm
程序员鱼皮17 小时前
没听说过设计模式?保姆级教程来了!
计算机·程序员·开发·学习路线·自学