1. clima (JSON)
{
"openapi": "3.1.0",
"info": {
"title": "Get weather data",
"description": "Retrieves current weather data for a location.",
"version": "v1.0.0"
},
"servers": [
{
"url": "https://weather.example.com"
}
],
"paths": {
"/location": {
"get": {
"description": "Get temperature for a specific location",
"operationId": "GetCurrentWeather",
"parameters": [
{
"name": "location",
"in": "query",
"description": "The city and state to retrieve the weather for",
"required": true,
"schema": {
"type": "string"
}
}
],
"deprecated": false
}
}
},
"components": {
"schemas": {}
}
}
Esse código é um arquivo JSON da especificação OpenAPI que descreve uma API para obter dados meteorológicos. Em resumo, a API permite que o usuário consulte os dados meteorológicos de um local específico.
"openapi": "3.1.0"
Versão da especificação OpenAPI: Indica que a versão da especificação OpenAPI usada é a 3.1.0."info"
API: Esta seção fornece informações básicas sobre a API, incluindo título, descrição e versão."servers"
URLs do servidor: Esta seção lista os URLs do servidor para a API."paths"
API: Esta seção define os caminhos e as operações da API. Neste exemplo, há uma operação GET com um caminho de/location
que é usado para obter o clima em um local específico. Essa operação requer um arquivo chamadolocation
O parâmetro de consulta, que é obrigatório, é do tipo string."components"
: Esta seção é usada para definir os padrões usados na API, mas, neste exemplo, ela está vazia.
Na especificação da OpenAPI, oparameters
é uma matriz que define os parâmetros de entrada para operações de API.parameters
define um arquivo chamadolocation
O parâmetro de consulta, que é obrigatório, é do tipo string. Cada parâmetro é um objeto que contém as seguintes propriedades:
"name"
Nome do parâmetro: O nome do parâmetro."in"
Localização do parâmetro: A localização do parâmetro. Pode ser"query"
,"header"
,"path"
talvez"cookie"
."description"
Descrição do parâmetro: Descrição do parâmetro."required"
: Se paratrue
Esse parâmetro é necessário se o"schema"
Tipo de dados: O tipo de dados do parâmetro.
Com foco na posição dos parâmetros, os quatro casos são mostrados abaixo:
- para passar a chave de API no cabeçalho da solicitação.
- path para especificar a ID do objeto a ser recuperado no caminho do URL.
- O parâmetro cookie, usado para passar o ID da sessão do usuário em um cookie.
- O parâmetro de consulta, anexado ao URL, geralmente é usado para fornecer filtragem de informações.
Criar uma interface de ferramenta personalizada:
Interface da ferramenta de teste:
2. loja de animais de estimação (YAML)
# Taken from https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/petstore.yaml
openapi: "3.0.0"
info:
version: 1.0.0
title: Swagger Petstore
license:
name: MIT
servers:
- url: https://petstore.swagger.io/v1
paths:
/pets:
get:
summary: List all pets
operationId: listPets
tags:
- pets
parameters:
- name: limit
in: query
description: How many items to return at one time (max 100)
required: false
schema:
type: integer
maximum: 100
format: int32
responses:
'200':
description: A paged array of pets
headers:
x-next:
description: A link to the next page of responses
schema:
type: string
content:
application/json:
schema:
$ref: "#/components/schemas/Pets"
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
post:
summary: Create a pet
operationId: createPets
tags:
- pets
responses:
'201':
description: Null response
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/pets/{petId}:
get:
summary: Info for a specific pet
operationId: showPetById
tags:
- pets
parameters:
- name: petId
in: path
required: true
description: The id of the pet to retrieve
schema:
type: string
responses:
'200':
description: Expected response to a valid request
content:
application/json:
schema:
$ref: "#/components/schemas/Pet"
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
components:
schemas:
Pet:
type: object
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
Pets:
type: array
maxItems: 100
items:
$ref: "#/components/schemas/Pet"
Error:
type: object
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
type: string
pet.yaml
是一个 OpenAPI 规范文件,用于描述和定义一个名为 “Swagger Petstore” 的 API 的接口。这个文件使用了 YAML 格式,它是一种用于编写配置文件的人类可读的数据序列化标准。这个文件为开发者提供了一个清晰的 API 接口定义,使得开发者可以知道如何与 “Swagger Petstore” API 进行交互。文件中的主要部分包括:
openapi
: 这个字段指定了使用的 OpenAPI 规范的版本,这里是 “3.0.0”。info
Esta seção fornece informações básicas sobre a API, incluindo versão, título e licença.servers
URL do servidor: Esta seção define o URL do servidor para a API.paths
API: Esta seção define todos os caminhos e operações da API. Por exemplo./pets
O caminho tem duas operações:get
responder cantandopost
.get
é usada para listar todos os animais de estimação.post
As operações são usadas para criar um novo animal de estimação. Cada operação tem seus próprios parâmetros, respostas e outros detalhes.components
Esta seção define esquemas reutilizáveis que podem ser usados nopaths
Citado na seção. Por exemplo.Pet
ePets
responder cantandoError
Modo.
Converta o arquivo YAML acima para o formato JSON:
{
"openapi": "3.0.0",
"info": {
"version": "1.0.0",
"title": "Swagger Petstore",
"license": {
"name": "MIT"
}
},
"servers": [
{
"url": "https://petstore.swagger.io/v1"
}
],
"paths": {
"/pets": {
"get": {
"summary": "List all pets",
"operationId": "listPets",
"tags": ["pets"],
"parameters": [
{
"name": "limit",
"in": "query",
"description": "How many items to return at one time (max 100)",
"required": false,
"schema": {
"type": "integer",
"maximum": 100,
"format": "int32"
}
}
],
"responses": {
"200": {
"description": "A paged array of pets",
"headers": {
"x-next": {
"description": "A link to the next page of responses",
"schema": {
"type": "string"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Pets"
}
}
}
},
"default": {
"description": "unexpected error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
},
"post": {
"summary": "Create a pet",
"operationId": "createPets",
"tags": ["pets"],
"responses": {
"201": {
"description": "Null response"
},
"default": {
"description": "unexpected error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/pets/{petId}": {
"get": {
"summary": "Info for a specific pet",
"operationId": "showPetById",
"tags": ["pets"],
"parameters": [
{
"name": "petId",
"in": "path",
"required": true,
"description": "The id of the pet to retrieve",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Expected response to a valid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Pet"
}
}
}
},
"default": {
"description": "unexpected error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"Pet": {
"type": "object",
"required": ["id", "name"],
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"Pets": {
"type": "array",
"maxItems": 100,
"items": {
"$ref": "#/components/schemas/Pet"
}
},
"Error": {
"type": "object",
"required": ["code", "message"],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}
}
3. modelo em branco
{
"openapi": "3.1.0",
"info": {
"title": "Untitled",
"description": "Your OpenAPI specification",
"version": "v1.0.0"
},
"servers": [
{
"url": ""
}
],
"paths": {},
"components": {
"schemas": {}
}
}
Observação: Parece que o formato JSON é mais intuitivo.
Tutorial de saída estruturada:Como usar o objeto jsonarray no Dify?