雷池社区版OPEN API使用教程

news2024/10/28 22:04:16

OPEN API使用教程

新版本接口支持API Token鉴权

image.png

接口文档官方没有提供,有需要可以自行爬取,爬了几个,其实也很方便

使用条件

  • 需要使用默认的 admin 用户登录才可见此功能
  • 版本需要 >= 6.6.0

使用方法

1.在系统管理创建API TOKEN image.png

2.发起请求,请求的header中增加额外的参数,如下

"X-SLCE-API-TOKEN": "雷池管理端生成的API Token"

案例参考

# python使用API Token添加站点案例

import requests
import json

header = {
    "X-SLCE-API-TOKEN": "雷池管理端生成的API Token"
}
#添加站点的URL
url = 'https://雷池IP:9443/api/open/site'

playload = {
    "ports":["80"],"server_names":["*"],
    "upstreams":["http://127.0.0.1:9443"],"comment":"",
    "load_balance":{"balance_type":1}
}

playload = json.dumps(playload)
requests.post(url=url,headers=header,data=playload,verify=False)


#go语言案例
package main

import (
    "bytes"
    "crypto/tls"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    url := "https://雷池IP:9443/api/open/site"
    token := "雷池管理端生成的API Token"

    payload := map[string]interface{}{
        "ports":         []string{"80"},
        "server_names":  []string{"*"},
        "upstreams":     []string{"http://127.0.0.1:9443"},
        "comment":       "",
        "load_balance":  map[string]int{"balance_type": 1},
    }

    jsonData, _ := json.Marshal(payload)

    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    if err != nil {
        fmt.Println("Request error:", err)
        return
    }

    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("X-SLCE-API-TOKEN", token)

    client := &http.Client{
        Transport: &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true}},
    }
    resp, err := client.Do(req)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println("Response:", string(body))
}

# php 案例
<?php
$url = "https://雷池IP:9443/api/open/site";
$api_token = "雷池管理端生成的API Token";

$data = [
    "ports" => ["80"],
    "server_names" => ["*"],
    "upstreams" => ["http://127.0.0.1:9443"],
    "comment" => "",
    "load_balance" => ["balance_type" => 1]
];

$options = [
    "http" => [
        "header"  => [
            "Content-Type: application/json",
            "X-SLCE-API-TOKEN: $api_token"
        ],
        "method"  => "POST",
        "content" => json_encode($data),
        "ignore_errors" => true,
    ],
    "ssl" => [
        "verify_peer" => false,
        "verify_peer_name" => false,
    ]
];

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { /* Handle error */ }
echo $result;
?>

# java案例
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class AddSite {
    public static void main(String[] args) {
        try {
            String url = "https://雷池IP:9443/api/open/site";
            String apiToken = "雷池管理端生成的API Token";

            String payload = """
                {
                    "ports": ["80"],
                    "server_names": ["*"],
                    "upstreams": ["http://127.0.0.1:9443"],
                    "comment": "",
                    "load_balance": {"balance_type": 1}
                }
                """;

            URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
            con.setRequestMethod("POST");
            con.setRequestProperty("Content-Type", "application/json");
            con.setRequestProperty("X-SLCE-API-TOKEN", apiToken);
            con.setDoOutput(true);

            try (OutputStream os = con.getOutputStream()) {
                byte[] input = payload.getBytes(StandardCharsets.UTF_8);
                os.write(input, 0, input.length);
            }

            int responseCode = con.getResponseCode();
            System.out.println("Response Code: " + responseCode);
            // Further code to read the response can be added here
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
# node.js案例
const https = require('https');

const data = JSON.stringify({
    ports: ["80"],
    server_names: ["*"],
    upstreams: ["http://127.0.0.1:9443"],
    comment: "",
    load_balance: { balance_type: 1 }
});

const options = {
    hostname: '雷池IP',
    port: 9443,
    path: '/api/open/site',
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'X-SLCE-API-TOKEN': '雷池管理端生成的API Token'
    },
    rejectUnauthorized: false
};

const req = https.request(options, (res) => {
    let data = '';
    res.on('data', (chunk) => { data += chunk; });
    res.on('end', () => { console.log('Response:', data); });
});

req.on('error', (e) => { console.error(e); });
req.write(data);
req.end();
#ruby案例
require 'net/http'
require 'uri'
require 'json'
require 'openssl'

url = URI("https://雷池IP:9443/api/open/site")
api_token = "雷池管理端生成的API Token"

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["X-SLCE-API-TOKEN"] = api_token
request.body = {
  ports: ["80"],
  server_names: ["*"],
  upstreams: ["http://127.0.0.1:9443"],
  comment: "",
  load_balance: { balance_type: 1 }
}.to_json

response = http.request(request)
puts "Response:", response.read_body

大家可以结合熟悉的语言进行参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2225722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

参会记录|2024 中国计算机大会(CNCC 2024)

前言&#xff1a;2024年10月24-26日&#xff0c;有幸在横店参加了2024年度的中国计算机大会&#xff08;CNCC&#xff09;&#xff0c;本篇博客总结本人在会议期间收听的主要报告内容及收获。 2024.10.24 上午 夏苑海岳开襟 如何实现人工智能在现实场景中的落地&#xff1f; …

解锁V2G:电动汽车如何化身电网“充电宝”,最重要的是将成为一种赚钱的方式!

解锁V2G&#xff1a;电动汽车如何化身电网“充电宝” 随着新能源汽车的普及&#xff0c;电动汽车不仅仅是交通工具&#xff0c;还能成为电网的重要补充。今天&#xff0c;我们来聊聊V2G&#xff08;Vehicle-to-Grid&#xff09;技术&#xff0c;看看它是如何实现车辆与电网之间…

Git相关介绍

基本概念 关注&#xff08;watch&#xff09; 关注项目&#xff0c;当项目更新可以接收到通知 事物卡片&#xff08;Issue&#xff09; 发现代码BUG&#xff0c;但是目前没有成型代码&#xff0c;需要讨论时用 Git工作区域 工作区 添加、编辑、修改文件等动作 暂存区 …

蓝海创意云入选中国夏衍电影学会工业与科技影视专业委员会成员单位

党的二十届三中全会指出&#xff0c;科技自立自强是中国式现代化的有力保障。科技兴则民族兴&#xff0c;科技强则国家强。为深入的贯彻落实这一重要部署&#xff0c;推动工业与科技领域的融合发展充分发挥电影艺术在传播科技创新精神、展现工业发展成就方面的独特作用&#xf…

【AI大模型】使用谷歌 Gemini API 构建自己的 ChatGPT(二)

上一篇文章 【AI大模型】使用谷歌 Gemini API 构建自己的 ChatGPT&#xff08;一&#xff09;&#x1f680;我们介绍了 Gemini 是什么&#xff0c;以及如何使用Gemini 构建一个多模态的聊天场景示例。这一篇我们使用 langchain 与 Gemini 集成构建应用&#xff1a; 将 Langcha…

C/C++:WinSock_TCP通信实例

一、socket函数 第一种使用socket函数来创建套接字&#xff0c;函数调用成功将返回套接字句柄。 socket函数接收三个参数。af 、type 、protocol af&#xff1a;指定套接字使用的地址格式。 type&#xff1a;指定套接字的类型。 protocol&#xff1a;配合type参数使用&#xf…

Appium中的api(二)

目录 元素定位操作api 1--通过id定位api 2--通过class获取定位元素 3--通过xpath表达式定位元素 4.完整代码 解释 效果 元素定位操作api 1--通过id定位api 注:driver.find_element是获取单个元素 # 通过id获取 mySearchId "com.android.settings:id/search_acti…

(2024.10.28)使用YOLOv8训练自己的目标检测模型

收集数据集&#xff1a; 1.使用开源已标记数据集 2.自己网上搜索下载。 3.可以将图片几何变换&#xff0c;类似翻转、裁剪、旋转和平移&#xff0c;就变成多张图片了 标注数据集 &#xff1a; 常用的标注工具有很多&#xff0c;比如LabelImg&#xff08;易崩溃&#xff09;…

nacos的原理,为什么可以作为注册中心,和zookeeper的区别

Nacos 是阿里巴巴开源的一款用于动态服务发现、配置管理和服务治理的中间件&#xff0c;广泛应用于微服务架构中。它可以作为注册中心的原因在于其强大的服务注册与发现功能&#xff0c;原理上与 Zookeeper 有相似之处&#xff0c;但在设计目标和功能上有所区别。 Nacos 的原理…

猫头虎分享: 108个最新国内AI工具集,AI写作AI绘画工具大全

猫头虎分享&#xff1a; 108个最新国内AI工具集&#xff0c;AI写作AI绘画工具大全 &#x1f3a8;&#x1f916; &#x1f44b; 大家好呀&#xff0c;这里是 猫头虎&#xff0c;专注于分享技术干货、AI工具和实用资源。今天给大家带来一份超级干货清单——108个国内最流行的AI工…

PPT制作新选择:本地部署PPTist结合内网穿透实现实时协作和远程使用

文章目录 前言1. 本地安装PPTist2. PPTist 使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 配置固定公网地址 &#x1f4a1; 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击跳转到网站】 前…

【Python】数据分析必备:Pandas库的全面教程与实战

数据分析必备&#xff1a;Pandas库的全面教程与实战 在数据分析领域&#xff0c;Python已成为一门主流语言&#xff0c;而Pandas库则是Python中最重要的数据分析工具之一。无论是数据清洗、数据处理&#xff0c;还是数据可视化&#xff0c;Pandas都能为数据科学家和分析师提供…

解决nexus无法启动问题

&#x1f389; 问题 首先&#xff0c;nexus对jdk版本有要求&#xff0c;这点相信大家都知道&#xff0c;如果版本不对的话&#xff0c;会报以下错误&#xff1a; No suitable Java Virtual Machine could be found on your system. The version of the JVM must be at least 1…

ZEISS ATOS Q蓝光三维扫描仪高效把控零件质量检测【上海沪敖3D】

位于Bengaluru的施耐德电气工厂拥有一流的计量设备&#xff0c;可以检测所有供应商的零件。当时&#xff0c;他们在使用一款激光扫描设备进行质量检测&#xff0c;但是&#xff0c;该设备不便于携带&#xff0c;且检测时需要喷涂大量的显影液。此外&#xff0c;它需要被安装在夹…

React中的hook

React中的hook究竟是什么&#xff1f; 有哪些hook&#xff1f; hook的两大规则 为什么hook要在顶层调用&#xff1f; hook的调用需要在每一次render后都按照一样的顺序进行调用&#xff0c;否则会出现类似“野指针”的情况&#xff0c;但是要做到这一步&#xff0c;就需要hook在…

微服务网格Istio介绍

微服务网格Istio 介绍服务注册和发现服务度量灰度发布 Istio核心特性断路器互动1&#xff1a;举个生活中的例子解释断路器互动2&#xff1a;服务降级&#xff08;提高用户体验效果&#xff09; 超时重试多路由规则 Istio架构istio组件详解PilotEnvoyCitadelGalleyIngressgatewa…

Spring Cloud --- Sentinel 热点规则

何为热点 热点即经常访问的数据&#xff0c;很多时候我们希望统计或者限制某个热点数据中访问频次最高的TopN数据&#xff0c;并对其访问进行限流或者其它操作 热点规则 方法 testHotKey 里面第一个参数 P1 只要 QPS 超过每秒 1 次&#xff0c;马上降级处理 请求路径中不管…

ArcGIS 10.8 安装教程(含安装包)

目录 一、ArcGIS10.8二、安装链接三、安装教程四、ArcGIS实战 &#xff08;一&#xff09;ArcGIS10.8 1. 概述 ArcGIS 10.8是由美国Esri公司开发的GIS平台&#xff0c;用于处理、分析、显示和管理地理数据&#xff0c;并实现数据共享。它具有新特性和功能&#xff0c;性能更…

信号完整性SI总结【小登培训】

信号完整性问题的根源通常在于阻抗不匹配、串扰、时序误差、电磁辐射和电源噪声。解决这些问题需要从PCB设计、布线、材料选择、匹配和屏蔽等多个方面综合考虑&#xff0c;并结合眼图分析等工具进行调试和优化。确保信号完整性对于高速电路设计尤为重要&#xff0c;影响系统的可…

异常处理与调试:如何编写稳健的代码(8/10)

目录 异常处理与调试&#xff1a;如何编写稳健的代码&#xff08;8/10&#xff09; 介绍 异常概述 常见的异常类型 使用 try...except 处理异常 基本结构 示例&#xff1a;读取文件内容 捕获多个异常 自定义异常 示例&#xff1a;自定义异常类 调试代码 使用 print…