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

背景

在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 小时前
AI Agent 发展趋势与架构演进
程序员·llm·agent
AI大模型2 小时前
无所不能的Embedding(01) - 词向量三巨头之Word2vec模型详解&代码实现
程序员·llm·agent
程序员鱼皮3 小时前
扒了下 Cursor 的提示词,被狠狠惊艳到了!
计算机·ai·程序员·大模型·互联网·编程
京东云开发者6 小时前
我如何用Prompt工程将大模型调教成风控专家
程序员
京东云开发者7 小时前
理论到实战,高可用架构踩坑说明书
程序员
袁煦丞10 小时前
宝塔FTP远程文件管理+安全防护:cpolar内网穿透实验室第417个成功挑战
前端·程序员·远程工作
韦德说11 小时前
我的副业之 - 三年磨一剑,让非技术人员也能实现建站自由
后端·程序员·开源
灵感__idea12 小时前
JavaScript高级程序设计(第5版):前端的能力边界
前端·javascript·程序员
弗锐土豆21 小时前
程序员之电工基础-初尝线扫相机
程序员·工控·线扫相机·电工