在线API文档管理工具Simple doc
Simple doc是一个简易的文档发布管理工具,为什么要写Simple doc呢?主要原因还是github的wiki并不好用;没有目录结构,文章没有Hx标签索引,最悲剧的是文章编辑的时候不能直接图片粘贴和文件上传;为了满足自己的需求也顺带帮Beetlex写个完整的web示例所以花了些时间写了Simple doc.虽然Simple doc功能简单但在文档展现上还是要比github的wiki好上不少,所以在完成后也把github的wiki迁到这上面来了(毕竟都是基于markdown所以迁过来也简单)。
功能
基于markdown
(如果不会
markdown那这个工具就没法用了)支持图片和附件上传
默认实现只支持
jpa,png,zip和rar文件上传(最大2MB,这个限制可以自行修改),上传方式支持:拖放,粘贴等.支持各种代码主题
支持数十种代码主题,由浏览者选择自己喜欢的主题
支持两层目录列表
大部分情况下两层目录能够满足大部分需求,所以在实现上没有支持更多层次的目录结构
支持文章结构标签
只要文章超过3个h2,h3,h4的标签则会对应生成文件的目录列表,方便文章内容定位
运行环境
支持linux,windows等装有.net core 2.2或更高版的服务环境。
编译项目
从https://github.com/IKende/SimpleDoc下载最新的源码,用vs2017或更高版本打开然后发布即可;发布完成后目录下有run.bat和run.sh两运行文件运行即可。如果想运行windows service需要自行封装,想在linux下后台运行可以在用nohup &指令来运行。
HTTP配置
项中的HttpConfig.json是配置相关服务,主要用于配置服务端口,地址和HTTPs等。详细可以查看http://doc.ikende.com/#c6d82c8e677f43cfa1127f32c308caa1
运行效果
可以通过查看http://doc.ikende.com实际部署效果,这是beetlex的官方文档地址。

选择代码主题
Simple doc的代码主题是浏览者自己来选择,选择后查看其他文章里的代码都是这一主题来展现。

管理
既然是简易版,那在功能管理当然也是直接粗暴,功能和界面都相当简陋!功能主要有三个:分类管理,文章管理和配置(注意:登陆的用户名是 admin,密码是123456).

不过分类还是文章都有内容,如果分类有内容的情况在浏览时会把内容展现出来,如果没有则会拿分类下的第一篇文章来展现。除了基础信息外还提供是否发布和排序的顺序设置,如果没有发布的分类或文章是不会被展现出来。
文章编辑
接下来让你看一下什么是最简陋的文档编辑页面了……

可以根据需要切换编辑预览模式

不要惊讶你看到http://doc.ikende.com上的所有文档就是这样编辑出来的;其实markdown还真不需要什么多功能的文本编辑器, 有一个文档输入框就足够了。但上面的输入框还有一个很重要的功能,就是支持图片粘贴和拖放,再结合下面的上传按钮就足可以完成附件添加功能.编辑旁边有一个预览按钮,可以切换过去看当前编辑内容的完整展现。
管理配置

主要用于修改网站标题,管理密码和JWT对应的Key
实现技术
Simple doc是基于BeetleX.FastHttpApi和vuejs来实现,对于我这样一个后端人员来vuejs的切入还是比较容易的,说实话用起还真是爽!在这个项目除了了解到BeetleX.FastHttpApi和vuejs的结合外还能了解到一些js处理粘贴文件上传和图片大小切割的一些实现功能。其实为了更好地和vuejs还封装了一个对应的client类,以下简单地展现一下Simple doc的登陆代码:
- html
<form>
<div class="form-group">
<label>用户名</label>
<input type="text" v-model="login.data.name" class="form-control input-sm">
</div>
<div class="form-group">
<label>密码</label>
<input type="password" v-model="login.data.pwd" class="form-control input-sm">
</div>
<button type="button" @click="login.post()" class="btn btn-default btn-sm">登陆</button>
</form>
- javascript
var login = new beetlexAction("/admin/Login", { name: '', pwd: '' });
login.requesting = function (d) {
if (!d.name || !d.pwd) {
alert('输入登陆用户名和密码!');
return false;
}
return true;
};
login.requested = function (r) {
if (r) {
window.location.href = "/admin/";
}
else {
alert('用户名或密码不正确!');
}
};
var page = new Vue({
el: '#page',
data: {
info: webSiteInfo,
login: login,
}
});
- server api
[SkipFilter(typeof(AdminFilter))]
public object Login(string name, string pwd, IHttpContext context)
{
if (name == Webconfig.Default.Data.Usename && pwd == Webconfig.Default.Data.Password)
{
JWTHelper.Default.CreateToken(context.Response, name, "admin");
return true;
}
return false;
}
如果你对这种应用技术感兴趣可以关注Simple doc的源码和BeetleX
在线API文档管理工具Simple doc的更多相关文章
- API文档管理工具-数据库表结构思考.
API文档管理工具-数据库表结构思考. PS: 管理工具只是为了方便自己记录API的一些基本信息,方便不同的开发人员 (App Developer, Restful API Developer)之间的 ...
- REST api文档管理工具
问题: 不同软件/程序在网络中互相传递信息不统一. 交互不便. REST API 作用: RESTful API就是一套协议,用来规范多种形式的前端和同一个后台的交互方式. 原理: 组成/流程/规范: ...
- API文档管理工具
系统庞大之后,前后端分离开发,前端调用后端提供的接口,请求协议一般是 HTTP,数据格式一般是 JSON.后台只负责数据的提供和计算,而完全不处理展现逻辑和样式:前端则负责拿到数据,组织数据并展现的工 ...
- API 文档管理工具 (Yapi) Docker Compose部署指南
前言介绍 Yapi 由 YMFE 开源,旨在为开发.产品.测试人员提供更优雅的接口管理服务,可以帮助开发者轻松创建.发布.维护 API. 权限管理 YApi 成熟的团队管理扁平化项目权限配置满足各类企 ...
- 一个能快速写出实体类的Api文档管理工具
今天各种MVC框架满天飞,大大降低了编码的难度,写实体类就没有办法回避的一件事了,花大把的时间去做一些重复而且繁琐的工作,实在不是一个优秀程序员的作风,所以多次查找和尝试后,找到一个工具类网站——Ap ...
- 顶尖 API 文档管理工具 (Yapi)
原文地址:https://www.jianshu.com/p/a97d2efb23c5
- api接口测试工具和接口文档管理工具
api接口测试工具和接口文档管理工具 1.postman(https://www.getpostman.com) Postman 是一个很强大的 API调试.Http请求的工具.她可是允许用户发送任何 ...
- showdoc 开源在线api&&技术文档管理工具
showdoc 是一个很不错的api 以及技术文档管理工具 环境准备 doker-copose 文件 version: "3" services: doc: image: regi ...
- Api接口文档管理工具,你知道哪些呢?
上周看到有人在我的Github开源项目中提了个issue,说是否考虑接入swagger.那今天我就用swagger与其他接口文档工具做对比,同时说说Api接口文档工具的那点事.如今,在前后端分离开发的 ...
随机推荐
- 利用Travis CI+GitHub实现持续集成和自动部署
前言 如果你手动部署过项目,一定会深感持续集成的必要性,因为手动部署实在又繁琐又耗时,虽然部署流程基本固定,依然容易出错. 如果你很熟悉持续集成,一定会同意这样的观点:"使用它已经成为一种标 ...
- 深入Dapper.NET源码 (文长)
目录 前言.目录.安装环境 Dynamic Query 原理 Part1 Dynamic Query 原理 Part2 Strongly Typed Mapping 原理 Part1 : ADO.NE ...
- 解决thinkphp批量上传图片只有一张上传成功解决方案
批量上传时 存在一个生成文件名的问题 如果出现此bug,则不要用原生的生成规则来命名图片文件名 如果你试试同时上传两个不同类型,例如一张jpg,一张png,你就发现的确是可以两张同时上传的! 方案1: ...
- [LeetCode] 704. Binary Search
Description Given a sorted (in ascending order) integer array nums of n elements and a target value, ...
- Java 学习笔记之 线程sleep方法
线程sleep方法: 单主线程使用sleep: Main线程差了2000毫秒. public class MainSleepThread extends Thread{ @Override publi ...
- Python 命令行参数解析工具 argparse
为什么需要argparse 开门见山,举一个简易计算器代码的例子,其中sys.argv用来读取脚本执行时后面传入的参数. def calculator(x, y, operation): if &qu ...
- 二次函数,为什么a>0就可以知道开口向上.
最近自考. 学习高等数学. 学习高等数学过程中发现高中数学不会,,于是乎开始补高中数学. 学习高中数学过程中又发现初中数学有的不会,,于是乎开始补初中数学.. 可怕(→_→). 今天遇到一个二次函数, ...
- python编程基础之一
编译:将全部代码转成二进制可执行文件 速度快, c,c++等 解释:一行一行的将代码解释 速度慢 python,php等 python简介:Guido van Rossum 1989年 常用的pyth ...
- 用java求整数和
public class JavaAppArguments { /** * @param args */ public static void main(Str ...
- Java学习笔记之基础语法(数据类型)
8种基本数据类型 整型: byte[1字节] short[2字节] int[4字节] long[8字节] 1,四种整型之间的区别:申 ...