1
0
mirror of https://github.com/ZSCNetSupportDept/website.git synced 2025-10-28 17:05:03 +08:00

后端API文档(内测)

This commit is contained in:
2024-09-23 01:25:50 +08:00
parent c1f35228c4
commit 48c28f77ba
5 changed files with 660 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
# 后端API服务
## 介绍
该项目作为网维的统一后端API接口而设计连接网维的数据库并提供一系列接口给前端以支持网维日常的业务逻辑其他开发人员可以直接调用这些接口从而专注与前端以便于降低整个系统设计的复杂度
该项目采用Go语言编写Web框架采用echo,ORM框架为gorm,
## 项目地址
https://github.com/ZSCNetSupportDept/zscnetworksupport-api
## 构建
要想构建该项目,你需要安装`Go``make`,在一台linux机器上构建
输入`make install`即可安装本项目的依赖,而不构建
输入`make build`即可构建该项目,项目放在`make`文件夹下
## 部署
只需要把可执行文件放在生产环境下运行即可,本项目可能会提供一些静态文件访问,需要将`static`放在与可执行文件相同的目录下
## 配置
程序接受,且只接受一个参数,为配置文件的路径,关于配置文件的格式,请参照“配置”一章
## 运行
运行后程序会将日志和错误文件输出到stdout中你可以配置系统服务来使程序开机自启动将输出定向到日志或者stderr里
在运行程序之后你还要配置一些反向代理的软件来将流量导向程序所监听的端口你还要定期续期https证书以保证https访问

View File

@@ -0,0 +1,13 @@
# 配置
# 介绍
配置为一个`json`文件,其中,各个字段的定义如下:
`port`:一个数字,为程序所监听的端口
`database`:
- `Type`:一个字符串,指定了所使用的数据库的类型,需要在`MySQL` `PostgreSQL` `SQLite`中选择一个
- `Path`:对于SQLite填写数据库的位置对于其他的数据库填写URL
- `Port`:数据库所监听的端口SQLite可以不用填以下也是
- `User`:数据库用户名
- `name`:数据库名称,
- `Password`:数据库密码

View File

@@ -0,0 +1,22 @@
# 结构
仓库项目的结构如下:
`main.go`:项目程序的起点,从此处开始运行
`config`:存放了读取配置,提供配置变量相关的代码
`databases`:提供了连接数据库相关的代码,提供主数据库连接变量(Usingdb)
`handlers`:为handler的存放地点一类业务为一个对象handler作为其方法实现
`model`:业务所采用的模型,定义了一个业务对象的存储和相关方法
`use`:在这里注册所有需要提供的API和中间件,程序将使用这里的配置
`make`:存放了构建所产生的程序
`static`:存放了静态文件以进行路由
## 原理
当程序运行时:
main()将调用sysinit(),读取参数中的配置,将配置记录在全局变量`config.UseConfig`

0
docs/wiki/gitignore/.gitignore vendored Normal file
View File

View File

@@ -0,0 +1,604 @@
/*
* SPDX-FileCopyrightText: 2022-2024 Megan Conkle <megan.conkle@kdemail.net>
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
/******************************************************************************/
/* Scrollbars */
/******************************************************************************/
ghostwriter--MarkdownEditor QAbstractScrollArea::corner,
ghostwriter--HtmlPreview QAbstractScrollArea::corner,
ghostwriter--Sidebar QAbstractScrollArea::corner {
background: transparent;
}
ghostwriter--MarkdownEditor QAbstractScrollArea,
ghostwriter--HtmlPreview QAbstractScrollArea,
ghostwriter--Sidebar QAbstractScrollArea {
padding: 3px 3px 0px 3px;
margin: 0
}
ghostwriter--Sidebar MarkdownEditor::horizontal,
ghostwriter--Sidebar HtmlPreview::horizontal,
ghostwriter--Sidebar QScrollBar::horizontal {
height: 16px;
margin: 5px;
border: 0;
background: transparent;
}
ghostwriter--MarkdownEditor QScrollBar::vertical,
ghostwriter--HtmlPreview QScrollBar::vertical,
ghostwriter--Sidebar QScrollBar::vertical {
width: 16px;
margin: 5px;
border: 0;
background: transparent;
}
ghostwriter--MarkdownEditor QScrollBar::horizontal:hover,
ghostwriter--HtmlPreview QScrollBar::horizontal:hover,
ghostwriter--Sidebar QScrollBar::horizontal:hover {
background-color: #202325;
border-radius: 3px;
}
ghostwriter--MarkdownEditor QScrollBar::vertical:hover,
ghostwriter--HtmlPreview QScrollBar::vertical:hover,
ghostwriter--Sidebar QScrollBar::vertical:hover {
background-color: #202325;
border-radius: 3px;
}
ghostwriter--MarkdownEditor QScrollBar::handle:horizontal,
ghostwriter--HtmlPreview QScrollBar::handle:horizontal,
ghostwriter--Sidebar QScrollBar::handle:horizontal {
min-width: 50px;
border: 0;
background: #444749;
border-radius: 3px;
}
ghostwriter--MarkdownEditor QScrollBar::handle:horizontal,
ghostwriter--HtmlPreview QScrollBar::handle:horizontal,
ghostwriter--Sidebar QScrollBar::handle:horizontal {
min-width: 50px;
border: 0;
background: #444749;
border-radius: 3px;
}
ghostwriter--MarkdownEditor QScrollBar::handle:vertical,
ghostwriter--HtmlPreview QScrollBar::handle:vertical,
ghostwriter--Sidebar QScrollBar::handle:vertical {
min-height: 50px;
border: 0;
background: #444749;
border-radius: 3px;
}
ghostwriter--MarkdownEditor QScrollBar::handle:horizontal:hover,
ghostwriter--HtmlPreview QScrollBar::handle:horizontal:hover,
ghostwriter--Sidebar QScrollBar::handle:horizontal:hover {
background: #3daee9;
}
ghostwriter--MarkdownEditor QScrollBar::handle:vertical:hover,
ghostwriter--HtmlPreview QScrollBar::handle:vertical:hover,
ghostwriter--Sidebar QScrollBar::handle:vertical:hover {
background: #3daee9;
}
ghostwriter--MarkdownEditor QScrollBar::add-line,
ghostwriter--HtmlPreview QScrollBar::add-line,
ghostwriter--Sidebar QScrollBar::add-line,
ghostwriter--MarkdownEditor QScrollBar::sub-line,
ghostwriter--HtmlPreview QScrollBar::sub-line,
ghostwriter--Sidebar QScrollBar::sub-line,
ghostwriter--MarkdownEditor QScrollBar::add-page,
ghostwriter--HtmlPreview QScrollBar::add-page,
ghostwriter--Sidebar QScrollBar::add-page,
ghostwriter--MarkdownEditor QScrollBar::sub-page,
ghostwriter--HtmlPreview QScrollBar::sub-page,
ghostwriter--Sidebar QScrollBar::sub-page,
ghostwriter--MarkdownEditor QScrollBar::down-arrow,
ghostwriter--HtmlPreview QScrollBar::down-arrow,
ghostwriter--Sidebar QScrollBar::down-arrow,
ghostwriter--MarkdownEditor QScrollBar::right-arrow,
ghostwriter--HtmlPreview QScrollBar::right-arrow,
ghostwriter--Sidebar QScrollBar::right-arrow {
background: transparent;
border: 0
}
/******************************************************************************/
/* Menu Bar */
/******************************************************************************/
QMainWindow QMenuBar {
color: #bdc3c7;
background-color: #151719;
font-size: 10pt;
spacing: 2px;
border: 0px;
border-bottom: 1px;
border-color: #2c2f31;
border-style: solid;
padding: 1px 0px 1px 0px;
}
QMainWindow QMenuBar::item {
padding: 2px 7px 2px 7px;
border: 0px;
margin: 2px;
border-radius: 5px;
}
QMainWindow QMenuBar::item:selected {
background-color: #25282c;
}
QMainWindow QMenuBar::item:hover {
background-color: #373d42;
}
QMainWindow QMenuBar::item:pressed {
background-color: #1f2225;
}
/******************************************************************************/
/* Popup menus */
/******************************************************************************/
QMainWindow QMenu,
QMenuBar QMenu {
color: #bdc3c7;
background-color: #1a1d1f;
border: 0px;
padding: 7px 0px 7px 0px;
}
QMainWindow QMenu::item,
QMenuBar QMenu::item {
background-color: transparent;
padding: 5px 10px 5px 10px;
margin: 0px 0px 0px 0px;
}
QMainWindow QMenu::indicator,
QMenuBar QMenu::indicator {
width: 16px;
height: 16px;
background-color: #25282c;
padding: 0px 5px 0px 5px;
margin: 0px 5px 0px 5px;
}
QMainWindow QMenu::indicator::unchecked,
QMenuBar QMenu::indicator::unchecked {
width: 16px;
height: 16px;
background-color: #25282c;
border-radius: 2px;
border-style: solid;
border-width: 1px;
border-color: #bdc3c7;
margin: 0px 5px 0px 5px;
}
QMainWindow QMenu::indicator::checked,
QMenuBar QMenu::indicator::checked {
width: 16px;
height: 16px;
background-color: #074051;
border-radius: 2px;
border-style: solid;
border-width: 1px;
border-color: #bdc3c7;
margin: 0px 5px 0px 5px;
}
QMainWindow QMenu::item:selected,
QMenuBar QMenu::item::selected {
background-color: #074051;
color: #bdc3c7;
}
QMainWindow QMenu::icon,
QMenuBar QMenu::icon {
border-radius: 2px;
border-width: 0px;
padding: 1px 3px 1px 3px;
margin: 0px 3px 0px 3px;
}
QMainWindow QMenu::icon::checked,
QMenuBar QMenu::icon::checked {
background-color: #373d42;
}
/******************************************************************************/
/* Editor */
/******************************************************************************/
QMainWindow QPlainTextEdit {
border: 0;
margin: 0;
padding: 5px;
background-color: #151719;
color: #bdc3c7;
selection-color: #bdc3c7;
selection-background-color: #074051;
font-family: Noto Sans Mono;
font-size: 15pt;
}
QMainWindow QSplitter::handle {
border: 0;
padding: 0;
margin: 0;
background-color: #2c2f31;
}
QMainWindow QSplitter::handle:vertical {
height: 1px;
}
QMainWindow QSplitter::handle:horizontal {
width: 1px;
}
/******************************************************************************/
/* Sidebar and Activity Bar */
/******************************************************************************/
/* Sidebar */
QMainWindow ghostwriter--Sidebar,
QSplitter ghostwriter--Sidebar {
border: 0;
margin: 0;
padding: 0;
background-color: #151719;
}
ghostwriter--Sidebar QStackedWidget {
border: 0;
padding: 1;
margin: 0;
background-color: #151719;
border-width: 0px;
}
/* Activity bar tabs */
ghostwriter--Sidebar QPushButton[checkable="true"] {
icon-size: 22px;
min-width: 40px;
max-width: 40px;
height: 40px;
outline: none;
margin: 0;
padding: 0;
border: 0;
background-color: transparent;
color: #8b8f92;
border-width: 0px;
border-left-width: 3px;
border-style: solid;
border-color: transparent;
border-radius: 0px;
}
ghostwriter--Sidebar QPushButton:checked {
border-color: #3daee9;
color: #bdc3c7;
background-color: #202325;
}
ghostwriter--Sidebar QPushButton:hover {
background-color: #202325;
}
ghostwriter--Sidebar QPushButton:checked:hover {
border-color: #3daee9;
color: #bdc3c7;
background-color: #202325;
}
/* Activity bar buttons */
ghostwriter--Sidebar QPushButton[checkable="false"] {
icon-size: 22px;
padding: 0;
margin: 0;
border: 0;
border-radius: 5px;
background-color: transparent;
color: #8b8f92;
width: 40px;
height: 40px;
}
ghostwriter--Sidebar QPushButton[checkable="false"]:hover {
color: #bdc3c7;
background-color: #202325;
}
ghostwriter--Sidebar QPushButton[checkable="false"]:pressed {
color: #bdc3c7;
background-color: transparent;
}
/* Stacked widgets inside sidebar pane */
ghostwriter--Sidebar QListWidget {
outline: none;
border: 0;
padding: 1;
background-color: #151719;
color: #bdc3c7;
font-size: 11pt;
font-weight: normal
}
ghostwriter--Sidebar QListWidget::item {
border: 0;
padding: 1 0 1 0;
margin: 0;
background-color: #151719;
color: #bdc3c7;
font-weight: normal
}
ghostwriter--Sidebar QListWidget::item:selected {
border-radius: 0px;
color: #bdc3c7;
background-color: #074051;
}
ghostwriter--Sidebar QLabel {
border: 0;
padding: 0;
margin: 0;
background-color: transparent;
font-size: 11pt;
color: #bdc3c7;
}
/******************************************************************************/
/* Status bar */
/******************************************************************************/
QStatusBar {
margin: 0;
padding: 0;
border-top: 1px solid #2c2f31;
border-left: 0;
border-right: 0;
border-bottom: 0;
background: #151719;
color: #8b8f92;
}
QStatusBar QLabel {
font-size: 11pt;
margin: 0px;
padding: 5px;
border: 0;
background: transparent;
color: #8b8f92;
}
QStatusBar QToolButton {
padding: 5 5 5 5;
margin: 0;
border: 0;
border-radius: 5px;
color: #8b8f92;
background-color: transparent;
font-size: 16px;
width: 32px;
height: 16px;
}
QStatusBar QToolButton:hover,
QStatusBar QToolButton:checked:hover {
background-color: #373d42;
}
QStatusBar QToolButton:pressed,
QStatusBar QToolButton:checked:pressed {
color: #73777a;
background-color: #1f2225;
}
QStatusBar QToolButton:flat,
QStatusBar QToolButton:checked {
background-color: #25282c;
}
QStatusBar QComboBox {
height: 22px;
border: 0px;
margin: 0;
padding: 0;
color: #8b8f92;
background-color: #151719;
font-size: 11pt;
}
QStatusBar QComboBox:hover {
border-bottom: 2px solid #3daee9;
}
QStatusBar QListView {
padding: 7px 0px 7px 0px;
margin: 0px;
color: #bdc3c7;
background-color: #151719;
}
QStatusBar QListView::item {
background-color: transparent;
padding: 5px 10px 5px 10px;
margin: 0px;
}
QStatusBar QListView::item:selected {
background-color: #074051;
color: #bdc3c7;
}
QStatusBar QComboBox::drop-down {
border: 0;
margin: 0;
padding: 0;
height: 20px;
width: 20px;
}
QStatusBar QComboBox::down-arrow {
border: 0;
margin: 0;
padding: 0;
height: 14px;
width: 14px;
image: url(/tmp/lIaSog.png)
}
QStatusBar QComboBox::drop-down:hover {
border-radius: 10px;
background-color: #373d42;
}
QStatusBar #leftStatusBarWidget,
QStatusBar #midStatusBarWidget,
QStatusBar #rightStatusBarWidget {
border: 0;
margin: 0;
padding: 0;
}
/******************************************************************************/
/* Find and Replace Pane */
/******************************************************************************/
ghostwriter--FindReplace QLabel {
font-size: 11pt;
margin: 0px;
padding: 5px;
border: 0;
background: transparent;
color: #8b8f92;
}
ghostwriter--FindReplace QPushButton {
font-size: 16px;
padding: 5 5 5 5;
margin: 0;
border: 0;
border-radius: 5px;
color: #8b8f92;
background-color: transparent;
min-width: 16px;
}
ghostwriter--FindReplace QPushButton:pressed {
color: #9da2a6;
background-color: transparent;
}
ghostwriter--FindReplace QPushButton:hover {
color: #ffffff;
background-color: transparent;
}
ghostwriter--FindReplace QPushButton:disabled {
color: #adb3b6;
background-color: transparent;
}
ghostwriter--FindReplace QPushButton[checkable="true"] {
color: #8b8f92;
background-color: transparent;
min-width: 32px;
height: 16px;
}
ghostwriter--FindReplace QPushButton[checkable="true"]:disabled,
ghostwriter--FindReplace QPushButton:flat:disabled {
color: #adb3b6;
background-color: #272a2e;
}
ghostwriter--FindReplace QPushButton[checkable="true"]:hover,
ghostwriter--FindReplace QPushButton:checked:hover {
background-color: #d0d7db;
background-color: #373d42;
}
ghostwriter--FindReplace QPushButton[checkable="true"]:pressed,
ghostwriter--FindReplace QPushButton:checked:pressed {
color: #73777a;
background-color: #1f2225;
}
ghostwriter--FindReplace QPushButton:checked {
background-color: #25282c;
}
ghostwriter--FindReplace QPushButton:flat {
color: #8b8f92;
background-color: #25282c;
font-weight: bold;
}
ghostwriter--FindReplace QPushButton:flat:hover {
color: #d0d7db;
background-color: #373d42;
}
ghostwriter--FindReplace QPushButton:flat:pressed {
color: #73777a;
background-color: #1f2225;
}
ghostwriter--FindReplace QPushButton:flat:disabled {
color: #adb3b6;
background-color: #272a2e;
}
ghostwriter--FindReplace QPushButton#matchCaseButton,
ghostwriter--FindReplace QPushButton#regexButton {
font-size: 16px;
font-family: default;
font-weight: bold;
}
ghostwriter--FindReplace QPushButton#replaceButton,
ghostwriter--FindReplace QPushButton#replaceAllButton {
font-size: 11pt;
font-family: default;
}
ghostwriter--FindReplace QPushButton#findReplaceCloseButton {
padding: 0;
margin: 0;
icon-size: 16px;
}
ghostwriter--FindReplace QLineEdit {
color: #bdc3c7;
background-color: #202325;
border: 0px;
border-radius: 3px;
selection-color: #bdc3c7;
selection-background-color: #074051;
}
ghostwriter--FindReplace QLineEdit:focus {
border: 1px solid #1d2022;
}