diff --git a/web/src/constant.js b/web/src/constant.js
index 504a3c8..da45541 100644
--- a/web/src/constant.js
+++ b/web/src/constant.js
@@ -1,3 +1,6 @@
+import { ApiStrGenerate } from "@/util/viewApi.js";
+
+
// 定义一些常量名
const CONSTANT = {
PAGE: 1,
@@ -66,10 +69,19 @@ const CONSTANT = {
},
],
LOGO: ``,
-
+ API_VIEW_DATA: [
+ { label: "curl", class: "language-shell line-numbers", code: "", func: ApiStrGenerate.getCurlString },
+ { label: "python", class: "language-python line-numbers", code: "", func: ApiStrGenerate.getPythonString },
+ { label: "go", class: "language-go line-numbers", code: "", func: ApiStrGenerate.getGolangString },
+ { label: "java", class: "language-java line-numbers", code: "", func: ApiStrGenerate.getJaveString },
+ { label: "rust", class: "language-rust line-numbers", code: "", func: ApiStrGenerate.getRustString },
+ { label: "php", class: "language-php line-numbers", code: "", func: ApiStrGenerate.getPHPString },
+ { label: "node", class: "language-javascript line-numbers", code: "", func: ApiStrGenerate.getNodeString },
+ ],
}
+// 转换渠道map
CONSTANT.WAYS_DATA_MAP = {};
CONSTANT.WAYS_DATA.forEach(element => {
CONSTANT.WAYS_DATA_MAP[element.type] = element
diff --git a/web/src/util/viewApi.js b/web/src/util/viewApi.js
index b353518..9a19643 100644
--- a/web/src/util/viewApi.js
+++ b/web/src/util/viewApi.js
@@ -6,24 +6,176 @@ const gethttpOrigin = () => {
class ApiStrGenerate {
-
- static getCurlString(task_id, options) {
+ static getDataString(task_id, options) {
let data = { task_id: task_id };
data.title = 'message title';
data.text = 'Hello World!';
- if (options.html ) {
+ if (options.html) {
data.html = '
Hello World!
';
}
- if (options.markdown ) {
+ if (options.markdown) {
data.markdown = '**Hello World!**';
}
let dataStr = JSON.stringify(data, null, 4);
+ return dataStr
+ }
+
+ static getCurlString(task_id, options) {
+ let dataStr = ApiStrGenerate.getDataString(task_id, options);
let example = `curl -X POST --location '${gethttpOrigin()}/api/v1/message/send' \\
--header 'Content-Type: application/json' \\
--data '${dataStr}'`;
return example;
}
+ static getGolangString(task_id, options) {
+ let dataStr = ApiStrGenerate.getDataString(task_id, options);
+ let example = `package main
+
+import (
+ "fmt"
+ "io"
+ "log"
+ "net/http"
+ "strings"
+)
+
+func main() {
+ client := &http.Client{}
+ var data = strings.NewReader(\`${dataStr}\`)
+ req, err := http.NewRequest("POST", "${gethttpOrigin()}/api/v1/message/send", data)
+ if err != nil {
+ log.Fatal(err)
+ }
+ req.Header.Set("Content-Type", "application/json")
+ resp, err := client.Do(req)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer resp.Body.Close()
+ bodyText, err := io.ReadAll(resp.Body)
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Printf("%s\\n", bodyText)
+}
+ `;
+ return example;
+ }
+
+ static getPythonString(task_id, options) {
+ let dataStr = ApiStrGenerate.getDataString(task_id, options);
+ let example = `import requests
+
+headers = {
+ 'Content-Type': 'application/json',
+}
+json_data = ${dataStr}
+response = requests.post('${gethttpOrigin()}/api/v1/message/send', headers=headers, json=json_data)
+
+print("response:", response.json())
+`;
+ return example;
+ }
+
+ static getJaveString(task_id, options) {
+ let dataStr = ApiStrGenerate.getDataString(task_id, options);
+ let example = `import java.io.IOException;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpRequest.BodyPublishers;
+import java.net.http.HttpResponse;
+
+HttpClient client = HttpClient.newBuilder()
+ .followRedirects(HttpClient.Redirect.NORMAL)
+ .build();
+
+HttpRequest request = HttpRequest.newBuilder()
+ .uri(URI.create("${gethttpOrigin()}/api/v1/message/send"))
+ .POST(BodyPublishers.ofString(${JSON.stringify(dataStr).trim('\"')}))
+ .setHeader("Content-Type", "application/json")
+ .build();
+
+HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+`;
+ return example;
+ }
+
+ static getRustString(task_id, options) {
+ let dataStr = ApiStrGenerate.getDataString(task_id, options);
+ let example = `extern crate reqwest;
+use reqwest::header;
+
+fn main() -> Result<(), Box> {
+ let mut headers = header::HeaderMap::new();
+ headers.insert("Content-Type", "application/json".parse().unwrap());
+
+ let client = reqwest::blocking::Client::new();
+ let res = client.post("${gethttpOrigin()}/api/v1/message/send")
+ .headers(headers)
+ .body(r#"
+${dataStr}
+"#
+ )
+ .send()?
+ .text()?;
+ println!("{}", res);
+
+ Ok(())
+}
+`;
+ return example;
+ }
+
+ static getPHPString(task_id, options) {
+ let dataStr = ApiStrGenerate.getDataString(task_id, options);
+ let example = `
-
- {{ currCode }}
+
+ {{ item.code }}
@@ -38,9 +38,10 @@ import { defineComponent, onMounted, watch, reactive, toRefs, onUpdated } from '
import { _ } from 'lodash';
import { usePageState } from '@/store/page_sate.js';
import Prism from "prismjs";
-import { ApiStrGenerate } from "@/util/viewApi.js";
import { QuestionFilled } from '@element-plus/icons-vue'
import { request } from '@/api/api'
+import { CONSTANT } from '@/constant'
+
export default defineComponent({
components: {
@@ -54,8 +55,9 @@ export default defineComponent({
const state = reactive({
isShow: false,
currCode: '',
+ currOption: '',
activeName: 'curl',
- language: "python",
+ apiViewData: CONSTANT.API_VIEW_DATA,
});
watch(pageState.ShowDialogData, (newValue, oldValue) => {
@@ -84,12 +86,17 @@ export default defineComponent({
return viewOptions
}
+ // 渲染api接口代码
const renderApiString = async () => {
let task_id = pageState.ShowDialogData[props.componentName].rowData.id;
- let options = await getViewOptions(task_id)
- if (state.activeName == 'curl') {
- state.currCode = ApiStrGenerate.getCurlString(task_id, options);
+ if (!state.currOption) {
+ state.currOption = await getViewOptions(task_id);
}
+ state.apiViewData.forEach(element => {
+ if (!element.code) {
+ element.code = element.func(task_id, state.currOption);
+ }
+ });
setTimeout(() => {
Prism.highlightAll()
}, 100)