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

推荐订阅源

月光博客
月光博客
Microsoft Security Blog
Microsoft Security Blog
T
Threatpost
D
DataBreaches.Net
B
Blog RSS Feed
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
N
Netflix TechBlog - Medium
O
OpenAI News
Webroot Blog
Webroot Blog
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
Google Online Security Blog
Google Online Security Blog
SecWiki News
SecWiki News
H
Help Net Security
Forbes - Security
Forbes - Security
N
News and Events Feed by Topic
aimingoo的专栏
aimingoo的专栏
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
腾讯CDC
B
Blog
H
Heimdal Security Blog
博客园 - 三生石上(FineUI控件)
C
CERT Recently Published Vulnerability Notes
L
Lohrmann on Cybersecurity
G
Google Developers Blog
Scott Helme
Scott Helme
C
CXSECURITY Database RSS Feed - CXSecurity.com
罗磊的独立博客
V
Visual Studio Blog
L
LINUX DO - 热门话题
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
F
Full Disclosure
C
Cisco Blogs
The Last Watchdog
The Last Watchdog
Security Archives - TechRepublic
Security Archives - TechRepublic
F
Fortinet All Blogs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
S
Security Affairs
P
Privacy & Cybersecurity Law Blog
S
Secure Thoughts
V
V2EX
雷峰网
雷峰网
Security Latest
Security Latest
H
Hacker News: Front Page
TaoSecurity Blog
TaoSecurity Blog
M
MIT News - Artificial intelligence

博客园 - 许仙儿

从大括号圣战到人机掰手腕: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 的开发者。