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

背景

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

相关推荐
dmy2 小时前
n8n内网快速部署
运维·人工智能·程序员
憨憨睡不醒啊4 小时前
如何让LLM智能体开发助力求职之路——构建属于你的智能体开发知识体系📚📚📚
面试·程序员·llm
程序员岳焱5 小时前
Java 程序员成长记(二):菜鸟入职之 MyBatis XML「陷阱」
java·后端·程序员
liangdabiao7 小时前
让AI写出真正可用的图文并茂的帖子(微信公众号,小红书,博客)
程序员
安妮的心动录7 小时前
人是习惯的结果
面试·程序员·求职
小兵张健8 小时前
笔记本清灰记录
程序员
陈随易10 小时前
Univer v0.8.0 发布,开源免费版 Google Sheets
前端·后端·程序员
陈随易1 天前
Element Plus 2.10.0 重磅发布!新增Splitter组件
前端·后端·程序员
陈随易1 天前
2025年100个产品计划之第11个(哆啦工具箱) - 像哆啦A梦口袋一样丰富的工具箱
前端·后端·程序员
大模型教程1 天前
RAG 实战指南(五):RAG 信息检索:如何让模型找到‘对的知识’
程序员·llm