【AI图像生成网站Golang】项目介绍

AI图像生成网站

目录

一、项目介绍

二、雪花算法

三、JWT认证与令牌桶算法

四、项目架构

五、图床上传与图像生成API搭建

六、项目测试与调试(等待更新)

简介

        本教程将手把手教你如何从零开始构建一个简单的AI图像生成网站。网站主要包含用户注册、图像生成、分类管理等功能,使用Golang作为后端开发语言,前端采用Vue.js,数据存储使用MySQL。通过本项目,您将学习如何使用Go语言搭建API服务,如何与外部图床和AI图像生成API集成,最终实现一个简单的AI图像生成网站。

技术栈: Golang + Vue.js + MySQL

项目地址https://github.com/Gezelligheid1010/Image-Processing-Tool-with-Go-AI

网站功能概览

本项目实现的页面结构和功能如下:
在这里插入图片描述项目共有六个页面,分别实现了注册登录功能、作品分组管理和作品管理,以及图像生成功能。

用户注册与登录

        提供新用户注册和已有用户登录功能,支持表单验证,确保用户数据的有效性和安全性。登录成功后生成JWT令牌,用户可在授权状态下访问其他页面。
在这里插入图片描述
在这里插入图片描述

分组管理

        显示用户创建的所有分类。用户可以查看已创建的分组及其中作品的概览,并可通过点击进入分组详情页查看具体内容。
在这里插入图片描述

创建分组

        允许用户自定义创建新的分组,为图像生成作品进行分组管理。用户可输入分组名称、描述和封面,并提交保存到数据库。

在这里插入图片描述

作品管理

        进入具体分组后,用户可浏览该分组下的所有作品,支持缩略图展示和详细信息查看,方便用户管理和查看作品内容。

在这里插入图片描述

创建作品页面

        用户可以在此页面上传图像文件,调用图床API上传图像并生成URL,将URL传递给AI图像生成API生成新作品。生成的作品将存储在指定分类中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

导航与路由

        设计清晰、直观的页面导航和路由,使用户可以快速切换页面。网站主要用于实现功能的路由包括:

  • 注册/登录后的主页跳转:用户完成注册或登录后,导航至分组展示页面。
  • 分组展示与详情页跳转:点击分组展示页面中的分组项目,即可跳转到对应的分组详情页。
  • 分组创建与作品创建导航:通过创建按钮,用户可直接进入分组创建和作品创建页面,完成图像生成和分组管理。
  • 分组删除与作品删除导航:通过删除按钮,用户可直接进入分组创建和作品创建页面,完成图像生成和分类管理。

以下是项目中所涉及的所有路由介绍:

路径请求方法功能描述中间件备注
/GET加载主页,显示HTML页面主页入口,提供基本的HTML内容
/staticStatic加载静态文件主要用于加载CSS、JS、图片等前端资源
/swagger/*anyGET注册Swagger文档Swagger用于自动生成和查看API文档,方便开发和测试
/api/v1/loginPOST用户登录限流中间件处理用户登录请求,验证用户凭证并返回Token
/api/v1/signupPOST用户注册限流中间件处理新用户注册信息,创建账户
/api/v1/refresh_tokenGET刷新访问令牌限流中间件为已登录用户刷新访问Token,保持登录状态
/api/v1/createCategoryPOST创建分类JWT认证中间件 + 限流中间件用于创建作品分类,便于对作品进行分组
/api/v1/categoryGET获取分类列表JWT认证中间件 + 限流中间件查询所有已创建的分类,返回分类信息列表
/api/v1/categoryDetail/:category_idGET获取分类中的作品JWT认证中间件 + 限流中间件查看指定分类下的作品详情
/api/v1/deleteCategory/:category_idDELETE删除分类JWT认证中间件 + 限流中间件删除指定分类,清理不再需要的分类
/api/v1/deleteWorksDELETE删除作品,传入列表JWT认证中间件 + 限流中间件批量删除指定的作品
/api/v1/uploadWorkPOST上传作品JWT认证中间件 + 限流中间件用户上传作品,保存并处理上传的作品
/api/v1/processImagePOST仅处理图片JWT认证中间件 + 限流中间件接收上传的图片并进行特定的图像处理操作
/debug/pprof/*anyGET注册pprof调试路由pprof为Go语言的性能分析工具,帮助识别瓶颈和优化代码性能
NoRouteAny未知路径返回404对于未匹配的路径返回404响应,提示路径无效
  • 静态文件:用于存储和提供前端资源(如CSS、JS、图片等),加载静态文件可以提高页面加载速度和用户体验。
  • Swagger文档:一种API文档生成和交互工具,可以根据代码生成接口文档,方便开发者查看和测试API,提升开发和调试效率。
  • JWT认证:JWT(JSON Web Token)是一种常用的认证方式,确保访问资源的用户经过身份验证。
  • 限流中间件:通过令牌桶算法限制请求速率,防止服务器资源被恶意占用。
  • pprof调试路由:提供性能分析工具,帮助识别代码中的瓶颈,如内存泄漏、CPU占用高等问题,优化服务器性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单片机学习笔记 4. 蜂鸣器滴~滴~滴~

更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯 目录 0、实现的功能 1、Keil工程 1-1 蜂鸣器工作原理 1-2 三极管工作原理 1-3 蜂鸣器原理图 2、代码实现 0、实现的功能 使蜂鸣器滴~滴~滴~ 1…

Shell脚本6 -- 条件判断if

声明: 本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(4)脚本与用户交互以及if条件判断】的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题&#xff0c…

SAM_Med2D 训练完成后boxes_prompt没有生成mask的问题

之前对着这这篇文章去微调SAM_Med2D(windows环境),发现boxes_prompt空空如也。查找了好长时间问题SAM-Med2D 大模型学习笔记(续):训练自己数据集_sam训练自己数据集-CSDN博客 今天在看label2image_test.json文件的时候发现了一些端倪: 官方…

3.1 数据链路层功能概述

1、思维导图 2、数据链路层基本概念 结点:主机、路由器链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加…

vue面试题8|[2024-11-14]

问题1:什么是渐进式框架? vue.js router vuex element ...插件 vue.js 渐0 router 渐1 vuex 渐2 vue.js只是一个核心库,比如我再添加一个router或者vuex,不断让项目壮大,就是渐进式框…

使用TensorFlow实现简化版 GoogLeNet 模型进行 MNIST 图像分类

在本文中,我们将使用 TensorFlow 和 Keras 实现一个简化版的 GoogLeNet 模型来进行 MNIST 数据集的手写数字分类任务。GoogLeNet 采用了 Inception 模块,这使得它在处理图像数据时能更高效地提取特征。本教程将详细介绍如何在 MNIST 数据集上训练和测试这…

2.5D视觉——Aruco码定位检测

目录 1.什么是Aruco标记2.Aruco码解码说明2.1 Original ArUco2.2 预设的二维码字典2.3 大小Aruco二维码叠加 3.函数说明3.1 cv::aruco::detectMarkers3.2 cv::solvePnP 4.代码注解4.1 Landmark图说明4.2 算法源码注解 1.什么是Aruco标记 ArUco标记最初由S.Garrido-Jurado等人在…

java 根据 pdf 模板带图片文字生成pdf文件

在现代应用开发中,自动生成包含动态内容的 PDF 文档在电子发票、合同生成、表单填充等场景中有着广泛的应用。本文将介绍如何使用 iText 库动态填充 PDF 模板字段,并在指定位置插入签名和公章图片。 项目需求 假设我们有一个 PDF 模板文件,包含表单字段,如用户姓名、地址…

计算机网络-MSTP基础实验一(单域多实例)

前面我们已经大致了解了MSTP的基本概念和工作原理,但是我自己也觉得MSTP的理论很复杂不结合实验是很难搞懂的,今天来做一个配套的小实验以及一些配置命令。 一、网络拓扑 单域多实例拓扑 基本需求:SW1为VLAN10的网关,SW2为VLAN20的…

进程相关知识

#include <sys/types.h> #include <unistd.h> pid_t fork(void); 函数的作用&#xff1a;用于创建子进程。 返回值&#xff1a; fork() 的返回值会返回两次。一次是在父进程中&#xff0c;一次是在子进程中。 在父进程中返回创建的子进程的 ID, 在子进程中…

Python中的TCP

文章目录 一. 计算机网络1. 网络的概念2. IP地址① IP地址的概念② IP地址的表现形式③ IP地址的作用④ 网络查询命令Ⅰ. ifconfig/ipconfigⅡ. ping 3. 端口和端口号的概念(计算机通信原理)① 端口的概念② 端口号的概念 4. socket套接字① socket概念② socket使用场景 二. T…

本地部署Apache Answer搭建高效的知识型社区并一键发布到公网流程

文章目录 前言1. 本地安装Docker2. 本地部署Apache Answer2.1 设置语言选择简体中文2.2 配置数据库2.3 创建配置文件2.4 填写基本信息 3. 如何使用Apache Answer3.1 后台管理3.2 提问与回答3.3 查看主页回答情况 4. 公网远程访问本地 Apache Answer4.1 内网穿透工具安装4.2 创建…

【数据结构】线性表——栈与队列

写在前面 栈和队列的关系与链表和顺序表的关系差不多&#xff0c;不存在谁替代谁&#xff0c;只有双剑合璧才能破敌万千~~&#x1f60e;&#x1f60e; 文章目录 写在前面一、栈1.1栈的概念及结构1.2、栈的实现1.2.1、栈的结构体定义1.2.2、栈的初始化栈1.2.3、入栈1.2.4、出栈…

科技改变工作方式:群晖NAS安装内网穿透实现个性化办公office文档分享(1)

文章目录 前言1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 前言 本文将详细介绍如何在群晖NAS上安装Synology Office和Synology Drive Server&#xff0c;并利用Cpolar内网穿透工具为本地文档配置固定的公网…

无插件H5播放器EasyPlayer.js网页web无插件播放器选择全屏时,视频区域并没有全屏问题的解决方案

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、MP3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…

rocketmq5源码系列--(一)--搭建调试环境

说在前头&#xff1a;阿里的rocketmq的文档是真他妈的烂的1b&#xff0c;很多东西都不说&#xff0c;全靠自己看源码&#xff0c;摸索&#xff0c;草&#xff0c;真的要吐血了 rocketmq的版本5而不是版本4&#xff0c;版本5比版本4多了个proxy rocketmq5 三个组件&#xff1a;…

【网页设计】CSS3 进阶(动画篇)

1. CSS3 2D 转换 转换&#xff08;transform&#xff09;是CSS3中具有颠覆性的特征之一&#xff0c;可以实现元素的位移、旋转、缩放等效果 转换&#xff08;transform&#xff09;你可以简单理解为变形 移动&#xff1a;translate旋转&#xff1a;rotate缩放&#xf…

django安装与项目创建

一、安装 在终端输入 pip install django //或者(&#xff09;指定安装版本 pip install django2.2 二、创建项目 2.1创建项目 django-admin startproject 项目名 2.2Django 项目中的关键文件 _init_.py:将目录标识为python包setting.py:核心配置文件&#xff0c;定义项目…

【redis】—— 初识redis(redis基本特征、应用场景、以及重大版本说明)

序言 本文将引导读者探索Redis的世界&#xff0c;深入了解其发展历程、丰富特性、常见应用场景、使用技巧等&#xff0c;最后会对Redis演进过程中具有里程碑意义的版本进行详细解读。 目录 &#xff08;一&#xff09;初始redis &#xff08;二&#xff09;redis特性 &#…

SpringBoot学习记录(三)之多表查询

SpringBoot学习记录&#xff08;三&#xff09;之多表查询 一、多表查询概述1、数据准备2、介绍3、分类 二、内连接三、外连接四、子查询1、标量子查询2、列子查询3、行子查询4、表子查询 三、案例1、准备环境2、需求实现3、&#xff08;附&#xff09;数据准备 一、多表查询概…