惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
V
Vulnerabilities – Threatpost
W
WeLiveSecurity
P
Privacy International News Feed
Cyberwarzone
Cyberwarzone
C
Cyber Attacks, Cyber Crime and Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
The Last Watchdog
The Last Watchdog
V2EX - 技术
V2EX - 技术
Schneier on Security
Schneier on Security
B
Blog RSS Feed
N
News and Events Feed by Topic
T
The Blog of Author Tim Ferriss
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
云风的 BLOG
云风的 BLOG
L
Lohrmann on Cybersecurity
小众软件
小众软件
T
Threat Research - Cisco Blogs
F
Full Disclosure
P
Palo Alto Networks Blog
Latest news
Latest news
Scott Helme
Scott Helme
T
Tailwind CSS Blog
M
MIT News - Artificial intelligence
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Hacker News: Front Page
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The Register - Security
The Register - Security
J
Java Code Geeks
The Cloudflare Blog
美团技术团队
博客园 - 【当耐特】
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Tor Project blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Security Latest
Security Latest
S
Securelist
Webroot Blog
Webroot Blog
博客园 - 三生石上(FineUI控件)
P
Privacy & Cybersecurity Law Blog
N
Netflix TechBlog - Medium
C
Check Point Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
H
Help Net Security
I
InfoQ
L
LINUX DO - 热门话题

博客园 - 许仙儿

从大括号圣战到人机掰手腕:AI时代,程序员的“累”换了个赛道 Git 文件忽略备忘录:`assume-unchanged` 完全指南 用go写一个微服务gPRC为主RESTful为辅 三号车间张三喜 为什么湖广不太吃鲤鱼 为什么夏天副高会导致伏旱,而冬天的西伯利亚高原又会带来寒流 普通RESTful和MCP调用对比 2026年放假安排 红楼梦龄官病死前和贾蔷同居的情节 古代的时辰,几更天与现在的时间对应关系是什么? 西游记结局评职称 生成一张图,苹果logo是透明冰块,安卓小机器人撒尿到苹果logo,冲出一个豁口 HL7v3和RIM是什么,和传统HL7,FHIR有什么关系 owl(Web Ontology Language)简介 关系型数据库 vs Elasticsearch 早上看到木蜂在抓取掉落到地上的国槐花,还一边打滚。它是否习性懒惰? Java SPI(Service Provider Interface)示例 常见古文中流行度和水平最高的前100首,按朝代分类 八卦的符号,读音,名称,代表的事务分别是什么 Spring Boot 中 JdbcTemplate、MyBatis 和 JPA 共用数据源的可行性 win10下python程序报错OPENSSL_Uplink(00007FFD0AC12FE8,08): no OPENSSL_Applink
API Blueprint​​ 是一种基于 ​​Markdown​​ 的轻量级 API 描述语言
许仙儿 · 2025-05-19 · via 博客园 - 许仙儿

API Blueprint 是一种基于 Markdown 的轻量级 API 描述语言,用于设计、文档化和模拟 RESTful API。它通过简单的文本格式定义 API 的端点、请求/响应结构和示例,适合开发者快速编写和共享 API 规范。以下是详细说明和示例:


1. API Blueprint 核心特点
• 基于 Markdown:易读易写,无需复杂工具。

• 机器可解析:支持生成文档、Mock 服务或客户端代码。

• 工具链支持:

• Apiary:在线编辑和托管 API Blueprint。

• Drakov:根据文档生成 Mock 服务。

• Snowboard:渲染为 HTML 文档。


2. 基础语法结构

语法 作用 示例
# API 名称 # 用户管理系统
## 资源分组(如端点集合) ## 用户 [/users]
### 具体 HTTP 方法(GET/POST 等) ### 获取用户 [GET]
+ Request 定义请求(参数、Headers、Body) + Headers: Authorization
+ Response 定义响应(状态码、Body 示例) + 200 (application/json)

3. 实际示例
示例 1:简单的用户 API

# 用户管理系统

## 用户 [/users]

### 获取所有用户 [GET]
+ Response 200 (application/json)
    ```json
    [
        { "id": 1, "name": "John" },
        { "id": 2, "name": "Jane" }
    ]
    ```

### 创建用户 [POST]
+ Request (application/json)
    ```json
    { "name": "Alice" }
    ```

+ Response 201 (application/json)
    ```json
    { "id": 3, "name": "Alice" }
    ```

## 单个用户 [/users/{id}]

### 获取用户详情 [GET]
+ Parameters
    + id (number) - 用户ID

+ Response 200 (application/json)
    ```json
    { "id": 1, "name": "John" }
    ```

+ Response 404 (text/plain)
    ```text
    User not found
    ```

示例 2:带认证的订单 API

# 电商订单系统

## 订单 [/orders]

### 获取订单列表 [GET]
+ Headers
    Authorization: Bearer {token}

+ Response 200 (application/json)
    ```json
    [
        { "id": "ORD-001", "total": 99.99 },
        { "id": "ORD-002", "total": 149.99 }
    ]
    ```

### 提交订单 [POST]
+ Request (application/json)
    ```json
    {
        "items": [
            { "productId": 101, "quantity": 2 }
        ]
    }
    ```

+ Response 201 (application/json)
    ```json
    { "orderId": "ORD-003", "status": "processing" }
    ```

4. 工具链应用示例
(1) 使用 Apiary 在线渲染

  1. 将上述 Markdown 粘贴到 Apiary
  2. 自动生成交互式文档,支持直接测试 API。

(2) 使用 Drakov 启动 Mock 服务

# 安装 Drakov
npm install -g drakov

# 启动 Mock 服务(假设文件为 api.md)
drakov -f api.md -p 8080

访问 http://localhost:8080/users 将返回示例中的 JSON 数据。

(3) 生成 HTML 文档

# 安装 Snowboard
npm install -g snowboard

# 生成 HTML
snowboard html api.md -o output/

5. 对比其他描述语言

特性 API Blueprint OpenAPI (Swagger) RAML
语法 Markdown YAML/JSON YAML
学习曲线 低(适合快速编写) 中(结构复杂)
Mock 支持 通过 Drakov 通过 Swagger UI 通过 RAML Mock
代码生成 有限(需第三方工具) 完善(官方工具链) 支持

6. 适用场景
• 快速原型设计:用 Markdown 快速描述 API 并与团队共享。

• 前后端协作:前端开发者根据 Mock 服务提前开发。

• 轻量级文档:无需复杂配置,直接托管在 Git 仓库中。


总结
API Blueprint 通过 简洁的 Markdown 语法 和 丰富的工具链,为 RESTful API 设计提供了灵活高效的解决方案。适合中小型项目或敏捷开发团队,尤其适合偏好 Markdown 的开发者。