一个人开发一个App(OpenApi)

为了少写代码,统一前后端的网络层,我使用了OpenApi设计restful接口。然后用openapi-generator来生成flutter的代码。生成go代码用的是oapi-codegen,它对go更友好一些。

我们直接在api.yml中设计接口,所有的返回值与请求者都提取到components里的schemas,responses里面去,这样生成的model命名更规范。

注意
1.go中的ID一般全部大写,而flutter这些是驼峰命名,所以要用x-go-name: ID来告诉生成go代码的时候用大写。
2.上传文件接口,上传多个文件的时候,生成的flutter代码final List? files;前面没有加@JsonKey(includeFromJson: false, includeToJson: false), 如果是单文件的就加了的。需要用vendorExtensions修改模版来生成

首先我们介绍go端的流程。
首先就是install插件

go install github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@latest

然后就能生成对应的go代码

oapi-codegen -config config.yml api.yml

flutter端的流程:

brew install openapi-generator

然后生成flutter代码

openapi-generator generate \-i api.yml \-g dart-dio \-o ./client_api \-t ./templates/dio \--additional-properties=serializationLibrary=json_serializable --global-property skipFormModel=false,modelDocs=false,apiTests=false,modelTests=false,enumUnknownDefaultCase=true

-g 有两个值 dart 与 dart-dio, dart就用内置的网络库,dart-dio用了一些第三方库如dio,json_serializable
-t 是模版,官方的模版可以再git clone https://github.com/OpenAPITools/openapi-generator.git下来在目录openapi-generator/modules/openapi-generator/src/main/resources/dart/libraries/dio里面可以看到,copy一份来修改即可。

这样就可以为我们生成go与flutter两端的接口代码,少写很多代码哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91223.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光伏气象监测系统:助力光伏发电的智慧大脑

光伏气象监测系统:助力光伏发电的智慧大脑 柏峰【BF-GFQX】在全球积极推动能源转型、大力倡导 “双碳” 目标的当下,光伏发电凭借其清洁、可再生的显著优势,宛如一颗冉冉升起的新星,在能源领域迅速崭露头角,得以广泛推…

SpringCloud01——项目演变、微服务远程调用三种方式、springcloud介绍、nacos注册中心

目录 一、项目架构演变过程 1、单体应用架构 2、垂直应用架构 3、分布式服务架构 4、流动计算架构(SOA架构) 5、微服务架构 二、如何实现微服务远程调用 1、HttpClient工具类(springboot中) 形式1:调用第三方…

Oracle 和 MySQL 中的日期类型比较

Oracle 和 MySQL 都提供了多种日期和时间数据类型,但它们在实现和功能上有一些差异。以下是两者的主要日期类型对比:Oracle 日期类型DATE存储日期和时间(精确到秒)格式:YYYY-MM-DD HH24:MI:SS示例:TO_DATE(…

基于 Redis 实现共享 Session 登录的多种方法与实践

全文目录:开篇语**前言****1. 什么是共享 Session 登录?****2. 基于 Redis 实现共享 Session 的基本方法****2.1 通过 Redis 存储 Session 数据****2.1.1 基本流程****2.1.2 示例代码(Java Spring Boot Redis)****3. 使用 Redis…

spring cloud + easyRules 零基础搭建智能规则引擎

你是否曾想过在项目中嵌入一套轻量级且高度可扩展的规则引擎,轻松实现动态化的业务决策?在金融、电商、政务等领域,风险控制是业务安全的核心。传统硬编码方式很难应对复杂多变的风控需求,而规则引擎允许我们将这些规则独立出来&a…

AI应用:电路板设计

Diode Computers 公司 Diode Computers是一家专注于利用AI技术进行定制电路板设计和制造的公司,提供从概念到量产的全流程服务。其核心优势在于将电路板设计转化为AI可理解的代码形式,大幅提升设计效率并降低传统EDA工具的使用门槛 0。 核心服务 设计与制…

RocketMQ学习系列之——客户端消息确认机制

一、客户端使用MQ基本代码示例1、添加maven依赖<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>5.3.0</version> </dependency>2、生产者代码示例public class Produc…

[leetcode] 组合总和

39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; i class Solution {int aim;vector<vector<int>> ret;vector<int> path; public:vector<vector<int>> combinationSum(vector<int>& nums, int target) {aim target;dfs(nums…

新能源行业B端极简设计:碳中和目标下的交互轻量化实践

新能源行业B端极简设计&#xff1a;碳中和目标下的交互轻量化实践内容摘要在新能源行业&#xff0c;碳中和目标正推动着企业追求更高的运营效率和更低的资源消耗。然而&#xff0c;传统的B端交互设计往往复杂繁琐&#xff0c;不仅增加了用户的操作成本&#xff0c;还可能导致资…

减速机:自动化生产线的“精密传动心脏”

减速机作为自动化生产线的核心传动部件&#xff0c;通过调节转速与扭矩实现设备精准控制&#xff0c;其在自动化生产线中发挥着关键作用。以下是其具体应用方式&#xff1a;输送线驱动在自动化生产线中&#xff0c;输送线用于运输物料、半成品或成品&#xff0c;通过减速机可以…

从0到1学PHP(五):PHP 数组:高效存储与处理数据

目录一、数组的定义与分类1.1 索引数组1.2 关联数组1.3 多维数组二、数组的基本操作2.1 数组元素的添加、删除、修改和访问2.2 数组指针的操作三、数组处理函数3.1 数组排序函数3.2 数组统计函数3.3 数组过滤与转换函数一、数组的定义与分类 在 PHP 中&#xff0c;数组是一种非…

vscode 字体的跟换

打开vscode 左下角输入电脑中已经有的字体&#xff1a;有想要用的可以自己进行安装刷新这样就可改变了

墨者:SQL过滤字符后手工注入漏洞测试(第3题)

1. 墨者学院&#xff1a;SQL过滤字符后手工注入漏洞测试(第3题)&#x1f680; 因为练习过太多的sql注入&#xff0c;废话不多介绍&#xff0c;我会通过围绕手动注入和工具爆破的方式达到靶场目标&#xff0c;开练&#xff01;&#xff01;&#xff01; 2. 手工注入方式&#x1…

【Spring AI实战】实现仿DeepSeek页面对话机器人(支持多模态上传)

一、前言 二、实现效果 三、代码实现 3.1 后端代码 3.2 前端代码 一、前言 Spring AI详解&#xff1a;【Spring AI详解】开启Java生态的智能应用开发新时代(附不同功能的Spring AI实战项目)-CSDN博客 二、实现效果 可上传图片或音频数据给大模型分析 三、代码实现 3.1 后…

Vue 正在热映模块

Vue 渐进式JavaScript 框架 基于Vue2的移动端项目&#xff1a;正在热映模块 目录 正在热映 数据修改 导入axios 配置反向代理 正在热映渲染 赋值数据 渲染列表 显示图片 优化列表 设置列表样式 主演 定义过滤器 使用过滤器 主演过长处理 无主演情况处理 观众评…

阿里云上进行k8s集群的配置

在阿里云容器服务Kubernetes&#xff08;ACK&#xff09;中配置集群的核心步骤可分为以下六大关键环节&#xff0c;涵盖架构设计到运维管理&#xff1a;1. 集群规划与基础配置 集群类型选择 托管版&#xff1a;Master节点由阿里云托管&#xff08;推荐生产环境&#xff09;专有…

页面性能优化

优化点解决方案效果双向绑定数量过多竞对设置单元格内部涉及双向绑定的输入组件过多&#xff0c;线上页面最多有88个该和抽屉中的编辑表格一样的组件&#xff0c;共计930个&#xff08;按每行最少6个来计算的&#xff09;双向绑定的组件&#xff0c;严重拖累页面性能。数据计算…

详细说明零拷贝

详细说明零拷贝【一】零拷贝介绍【1】说明【2】为什么需要零拷贝&#xff1f;—— 传统数据传输的问题【3】零拷贝的核心优化【4】零拷贝的实现方式&#xff08;1&#xff09;mmap&#xff08;内存映射&#xff09;&#xff08;2&#xff09;sendfile&#xff08;Linux 系统调用…

docker部署自己写的c++http服务器教程

我用的是ubuntu 22.04环境下 qt c 写的应用程序&#xff0c;是终端程序&#xff0c;不是界面&#xff0c;然后用linuxdeployqt工具将其打包成了AppImage可执行文件&#xff0c;以上是部署前的准备工作&#xff0c;需要确保AppImage可执行文件在自己的ubuntu上可以运行才能执行以…

Caffeine 缓存库的常用功能使用介绍

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…