We can't find the internet
Attempting to reconnect
### OpenAPI Specification 使用
Open API Specification 是由社区驱动的一套开放标准定义了一套面向 Rest API 的不和
编程语言绑定的接口规范
我们可以通过 Open API 定义的规范来生成对应的文档, Mock Server, Test,
Server/Client 代码模版
方便的快速开发和分享, 可以直接给客户看到对应的文档来解决问题.
### OpenAPI 开发工具
**Swagger Editor**
可以编辑 OpenAPI 文档
### OpenAPI 基本介绍
文档格式为 yaml 的 OpenAPI
```yaml
# API版本
openapi: 3.0.0
# APP信息
info:
# App 版本
version: 1.0.0
title: gsmlg-web
description: GSMLG Web API
# A URL to the Terms of Service for the API
termsOfService: https://www.gsmiot.com/termOfService
# contact info
contact:
name: Jonathan
url: https://www.gsmlg.org
email: me@gsmlg.org
# License
license:
name: 'GPL 3.0'
url: 'https://www.gnu.org/licenses/GPL-3.0.html'
# Added by API Auto Mocking Plugin
servers:
- description: SwaggerHub API Auto Mocking
url: https://virtserver.swaggerhub.com/gsmlg/gsmlg-web/1.0.0
- description: Production API
url: https://www.gsmiot.com/apis/gsmlg.com/v1
- url: https://{username}.gsmlg.org:{port}/{basePath}
description: aboard
variables:
username:
default: Josh
description: value for username
port:
enum:
- '443'
- '8443'
default: '8443'
basePath:
default: v2
# 标签, 分类使用
tags:
- name: blog
description: blog
externalDocs:
url: https://blog.gsmlg.org/docs
description: Blog Description
# 服务路径, 揭示API
paths:
'/blogs':
get:
tags:
- blog
summary: blogs list
operationId: listBlogs
responses:
200:
description: Success
content:
application/json:
schema:
type: object
properties:
date:
type: array
items:
$ref: '#/components/schemas/Blog'
post:
tags:
- blog
summary: Create Blog
description: create blog
operationId: createBlog
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Blog'
responses:
201:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Blog'
'/blogs/{blogId}':
get:
tags:
- blog
summary: Get a Blog content
operationId: getBlogById
parameters:
- name: blogId
in: path
required: true
description: id of blog
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Blog'
put:
tags:
- blog
summary: Update a Blog
operationId: updateBlog
parameters:
- name: blogId
in: path
required: true
description: id of blog
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Blog'
responses:
201:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Blog'
# 组建, 共享资源时, 引用定义在这里
components:
schemas:
Blog:
type: object
properties:
id:
type: string
name:
type: string
title:
type: string
date:
type: string
author:
type: string
content:
type: string
securitySchemes:
auth:
type: http
description: auth api key
scheme: bearer
bearerFormat: JWT
security:
- auth:
- write:blog
externalDocs:
url: https://docs.gsmlg.org
description: API Documents
```
### 其它工具资源
- [AWESOME OpenAPI3](https://apis.guru/awesome-openapi3/)
- [Swagger Editor](https://editor.swagger.io)
- [OpenAPI Tools](https://openapi.tools)