一個人開發一個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
英文地址,請注明出處:http://en.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編…