diff --git a/src/server/admin.go b/src/server/admin.go new file mode 100644 index 0000000000000000000000000000000000000000..70b127002321cfcac9e6d75f16958d69e04ce1ce --- /dev/null +++ b/src/server/admin.go @@ -0,0 +1,32 @@ +package server + +import ( + "encoding/json" + logUtils "github.com/easysoft/zendata/src/utils/log" + "io" + "net/http" +) + +func AdminHandler(writer http.ResponseWriter, req *http.Request) { + setupCORS(&writer, req) + logUtils.PrintToScreen("111") + + ret := new(Ret) + id := req.FormValue("id") + //id := req.PostFormValue('id') + + ret.Code = 0 + ret.Param = id + ret.Msg = "success" + ret.Data = map[string]interface{}{"key": "value"} + ret_json,_ := json.Marshal(ret) + + io.WriteString(writer, string(ret_json)) +} + +type Ret struct{ + Code int + Param string + Msg string + Data interface{} +} diff --git a/src/server/common.go b/src/server/common.go new file mode 100644 index 0000000000000000000000000000000000000000..9f1ec5126eb67c051cc739fc730e162aaf3afac5 --- /dev/null +++ b/src/server/common.go @@ -0,0 +1,11 @@ +package server + +import ( + "net/http" +) + +func setupCORS(w *http.ResponseWriter, req *http.Request) { + (*w).Header().Set("Access-Control-Allow-Origin", "*") + (*w).Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE") + (*w).Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization") +} diff --git a/src/zd.go b/src/zd.go index 3fd616784f531d47764161e4f6aef64c937b3747..1bc6094c26848e718109fc75cabcc0e9b6072445 100644 --- a/src/zd.go +++ b/src/zd.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/easysoft/zendata/src/action" "github.com/easysoft/zendata/src/gen" + "github.com/easysoft/zendata/src/server" "github.com/easysoft/zendata/src/service" commonUtils "github.com/easysoft/zendata/src/utils/common" configUtils "github.com/easysoft/zendata/src/utils/config" @@ -241,7 +242,7 @@ func StartServer() { vari.Ip, port, vari.Ip, port, vari.Ip, port), color.FgCyan) http.HandleFunc("/", DataHandler) - http.HandleFunc("/admin", AdminHandler) + http.HandleFunc("/admin", server.AdminHandler) err := http.ListenAndServe(fmt.Sprintf(":%d", vari.Port), nil) if err != nil { @@ -249,10 +250,6 @@ func StartServer() { } } -func AdminHandler(writer http.ResponseWriter, req *http.Request) { - logUtils.PrintToScreen("111") -} - func DataHandler(writer http.ResponseWriter, req *http.Request) { logUtils.HttpWriter = writer diff --git a/ui/package.json b/ui/package.json index 71b7912cd72075623fff0bbeb51b2290736232a3..e1f93c82753f7ab6410ac7b09fd3dc544eb49db9 100644 --- a/ui/package.json +++ b/ui/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "ant-design-vue": "^1.7.1", + "axios": "^0.21.0", "core-js": "^3.6.5", "less": "^2.x", "less-loader": "^3.x", diff --git a/ui/src/api/manage.js b/ui/src/api/manage.js new file mode 100644 index 0000000000000000000000000000000000000000..918269bf8f3fc3f24c40649c67d318614130678c --- /dev/null +++ b/ui/src/api/manage.js @@ -0,0 +1,17 @@ +import request from '../utils/request' + +const api = { + admin: '', + res: '/res', + def: '/defs', +} + +export default api + +export function listDefs () { + return request({ + url: api.admin, + method: 'get', + params: {} + }) +} diff --git a/ui/src/utils/axios.js b/ui/src/utils/axios.js new file mode 100644 index 0000000000000000000000000000000000000000..3b91f6b5985f59216de93b83b3ade9dd008c36cf --- /dev/null +++ b/ui/src/utils/axios.js @@ -0,0 +1,35 @@ +const VueAxios = { + vm: {}, + // eslint-disable-next-line no-unused-vars + install (Vue, instance) { + if (this.installed) { + return + } + this.installed = true + + if (!instance) { + // eslint-disable-next-line no-console + console.error('You have to install axios') + return + } + + Vue.axios = instance + + Object.defineProperties(Vue.prototype, { + axios: { + get: function get () { + return instance + } + }, + $http: { + get: function get () { + return instance + } + } + }) + } +} + +export { + VueAxios +} diff --git a/ui/src/utils/request.js b/ui/src/utils/request.js new file mode 100644 index 0000000000000000000000000000000000000000..0b4c0c8506643d5df9de9764ee4073ba3b0e5eac --- /dev/null +++ b/ui/src/utils/request.js @@ -0,0 +1,48 @@ +import notification from 'ant-design-vue/es/notification' +import axios from 'axios' +import { VueAxios } from './axios' + +const request = axios.create({ + baseURL: 'http://localhost:8848/admin', + timeout: 6000, +}) + +const errorHandler = error => { + if (error.response) { + const data = error.response.data + + if (error.response.status === 403) { + notification.error({ + message: 'Forbidden', + description: data.message + }) + } + if (error.response.status === 401) { + notification.error({ + message: 'Unauthorized', + description: 'Authorization verification failed' + }) + } + } + return Promise.reject(error) +} + +// request interceptor +request.interceptors.request.use(config => { + return config +}, errorHandler) + +// response interceptor +request.interceptors.response.use(response => { + return response.data +}, errorHandler) + +const installer = { + vm: {}, + install (Vue) { + Vue.use(VueAxios, request) + } +} + +export default request +export { installer as VueAxios, request as axios } diff --git a/ui/src/views/test/Test.vue b/ui/src/views/test/Test.vue index 65342f5abcbbc257d08278a58b7c69c3ba255924..34799812641bc17b603ea2c2baa14d8e8b0f4b15 100644 --- a/ui/src/views/test/Test.vue +++ b/ui/src/views/test/Test.vue @@ -11,8 +11,30 @@ diff --git a/ui/vue.config.js b/ui/vue.config.js new file mode 100644 index 0000000000000000000000000000000000000000..17ff70ed167f02a54b4f5a2fc73ae178ec347c3e --- /dev/null +++ b/ui/vue.config.js @@ -0,0 +1,13 @@ +const path = require('path'); + +function resolve(dir) { + return path.join(__dirname, dir) +} + +module.exports = { + chainWebpack: (config) => { + config.resolve.alias + .set('@', resolve('./src')) + // .set('components',resolve('./src/components')) + } +}