Explorar o código

增加接口选项

mxd %!s(int64=5) %!d(string=hai) anos
pai
achega
3fe8c14b81

+ 34 - 0
src/main/java/org/ssssssss/magicapi/config/ApiInfo.java

@@ -1,5 +1,9 @@
 package org.ssssssss.magicapi.config;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.util.Map;
+
 public class ApiInfo {
 
 	private String id;
@@ -12,6 +16,12 @@ public class ApiInfo {
 
 	private String name;
 
+	private String parameter;
+
+	private String option;
+
+	private Map optionMap;
+
 	public String getId() {
 		return id;
 	}
@@ -51,4 +61,28 @@ public class ApiInfo {
 	public void setName(String name) {
 		this.name = name;
 	}
+
+	public String getParameter() {
+		return parameter;
+	}
+
+	public void setParameter(String parameter) {
+		this.parameter = parameter;
+	}
+
+	public String getOption() {
+		return option;
+	}
+
+	public void setOption(String option) {
+		this.option = option;
+		try {
+			this.optionMap = new ObjectMapper().readValue(option, Map.class);
+		} catch (Throwable ignored) {
+		}
+	}
+
+	public Object getOptionValue(String key) {
+		return this.optionMap != null ? this.optionMap.get(key) : null;
+	}
 }

+ 6 - 7
src/main/java/org/ssssssss/magicapi/config/MagicApiService.java

@@ -12,12 +12,12 @@ public class MagicApiService {
 
 	private final String deleteById = "delete from magic_api_info where id = ?";
 	private final String selectList = "select id,api_name name,api_path path,api_method method from magic_api_info order by api_update_time desc";
-	private final String selectListWithScript = "select id,api_name name,api_path path,api_method method,api_script script from magic_api_info";
-	private final String selectOne = "select api_method method,api_script script,api_path path,api_name name from magic_api_info where id = ?";
+	private final String selectListWithScript = "select id,api_name name,api_path path,api_method method,api_script script,api_parameter parameter,api_option `option` from magic_api_info";
+	private final String selectOne = "select api_method method,api_script script,api_path path,api_name name,api_parameter parameter,api_option `option` from magic_api_info where id = ?";
 	private final String exists = "select count(*) from magic_api_info where api_method = ? and api_path = ?";
 	private final String existsWithoutId = "select count(*) from magic_api_info where api_method = ? and api_path = ? and id !=?";
-	private final String insert = "insert into magic_api_info(id,api_method,api_path,api_script,api_name,api_create_time,api_update_time) values(?,?,?,?,?,?,?)";
-	private final String update = "update magic_api_info set api_method = ?,api_path = ?,api_script = ?,api_name = ?,api_update_time = ? where id = ?";
+	private final String insert = "insert into magic_api_info(id,api_method,api_path,api_script,api_name,api_parameter,api_option,api_create_time,api_update_time) values(?,?,?,?,?,?,?,?,?)";
+	private final String update = "update magic_api_info set api_method = ?,api_path = ?,api_script = ?,api_name = ?,api_parameter = ?,api_option = ?,api_update_time = ? where id = ?";
 	private RowMapper<ApiInfo> rowMapper = new BeanPropertyRowMapper<>(ApiInfo.class);
 	private JdbcTemplate template;
 
@@ -56,11 +56,10 @@ public class MagicApiService {
 	protected boolean insert(ApiInfo info) {
 		info.setId(UUID.randomUUID().toString().replace("-", ""));
 		long time = System.currentTimeMillis();
-		return template.update(insert, info.getId(), info.getMethod(), info.getPath(), info.getScript(), info.getName(), time, time) > 0;
+		return template.update(insert, info.getId(), info.getMethod(), info.getPath(), info.getScript(), info.getName(), info.getParameter(), info.getOption(), time, time) > 0;
 	}
 
 	protected boolean update(ApiInfo info) {
-		long time = System.currentTimeMillis();
-		return template.update(update, info.getMethod(), info.getPath(), info.getScript(), info.getName(), System.currentTimeMillis(), info.getId()) > 0;
+		return template.update(update, info.getMethod(), info.getPath(), info.getScript(), info.getName(), info.getParameter(), info.getOption(), System.currentTimeMillis(), info.getId()) > 0;
 	}
 }

+ 5 - 1
src/main/resources/magicapi-support/index.html

@@ -65,14 +65,18 @@
 			<div class="layout-resizer-x"></div>
 			<div class="layui-right">
 				<div class="request-container">
-					<div class="layui-tab">
+					<div class="layui-tab" lay-filter="request">
 						<ul class="layui-tab-title">
 							<li class="layui-this">请求参数</li>
+							<li>接口选项</li>
 						</ul>
 						<div class="layui-tab-content">
 							<div class="layui-tab-item layui-show">
 								<div id="request-parameter"></div>
 							</div>
+							<div class="layui-tab-item">
+								<div id="option-parameter"></div>
+							</div>
 						</div>
 					</div>
 				</div>

+ 27 - 5
src/main/resources/magicapi-support/js/index.js

@@ -29,15 +29,19 @@ $(function(){
     var editor;
     var requestEditor;
     var outputEditor;
+    var optionEditor;
     var editorLayout = function(){
         editor&&editor.layout();
         requestEditor&&requestEditor.layout();
+        optionEditor && optionEditor.layout();
         outputEditor&&outputEditor.layout();
     }
+    var defaultRequestValue = '{\r\n\t"request" : {\r\n\t\t"message" : "Hello MagicAPI!"\r\n\t},\r\n\t"path" : {\r\n\t\t"id" : "123456"\r\n\t},\r\n\t"header" : {\r\n\t\t"token" : "tokenValue"\r\n\t},\r\n\t"cookie" : {\r\n\t\t"cookieName" : "cookieValue"\r\n\t},\r\n\t"session" : {\r\n\t\t"userId" : "123"\r\n\t}\r\n}';
     var resetEditor = function(){
         editor&&editor.setValue('return message;');
-        requestEditor&&requestEditor.setValue('{\r\n\t"request" : {\r\n\t\t"message" : "Hello MagicAPI!"\r\n\t},\r\n\t"path" : {\r\n\t\t"id" : "123456"\r\n\t},\r\n\t"header" : {\r\n\t\t"token" : "tokenValue"\r\n\t},\r\n\t"cookie" : {\r\n\t\t"cookieName" : "cookieValue"\r\n\t},\r\n\t"session" : {\r\n\t\t"userId" : "123"\r\n\t}\r\n}');
+        requestEditor && requestEditor.setValue(defaultRequestValue);
         outputEditor&&outputEditor.setValue('');
+        optionEditor && optionEditor.setValue('{\r\n}');
     }
     var addBreakPoint = function(line){
         if(editor){
@@ -89,6 +93,15 @@ $(function(){
             fixedOverflowWidgets :true,
             theme : 'json'
         });
+        optionEditor = monaco.editor.create(document.getElementById('option-parameter'), {
+            minimap: {
+                enabled: false
+            },
+            language: 'json',
+            folding: false,
+            fixedOverflowWidgets: true,
+            theme: 'json'
+        });
         outputEditor = monaco.editor.create(document.getElementById('output-result'), {
             minimap : {
                 enabled : false
@@ -123,6 +136,10 @@ $(function(){
         });
     });
 
+    var formatJson = function (val, defaultVal) {
+        return (val ? JSON.stringify(val, null, 4) : defaultVal) || '';
+    }
+
     var $tbody = $('#debug-tbody');
     var debugDecorations;
     var debugIn = function(id,data){
@@ -174,7 +191,7 @@ $(function(){
             return;
         }
         layui.element.tabChange('output-container', 'output');
-        outputEditor.setValue(JSON.stringify(json,null,4))
+        outputEditor.setValue(formatJson(json))
     }
     // 窗口改变大小时,刷新编辑器
     $(window).resize(editorLayout);
@@ -242,6 +259,9 @@ $(function(){
         resizeY.setCapture && resizeY.setCapture();
         return false;
     }
+    layui.element.on('tab', function () {
+        editorLayout();
+    });
     $('body').on('keydown',function(e){
         if(e.keyCode == 119){ //F8
             if(debugSessionId){
@@ -260,8 +280,6 @@ $(function(){
             }
             e.preventDefault();
         }
-    }).on('blur','#request-parameter',function(){
-        var value = this.value;
     }).on('click','.api-list li[data-id]',function(){
         var id = $(this).data('id');
         _ajax({
@@ -276,7 +294,9 @@ $(function(){
                 $('select[name=method]').val(info.method);
                 layui.form.render();
                 resetEditor();
-                editor.setValue(info.script);
+                editor && editor.setValue(info.script);
+                requestEditor && requestEditor.setValue(info.parameter || defaultRequestValue);
+                optionEditor && optionEditor.setValue(info.option || '{\r\n}');
 
             }
         })
@@ -335,6 +355,8 @@ $(function(){
                 path : path,
                 method : method,
                 id : apiId,
+                parameter: requestEditor.getValue(),
+                option: optionEditor.getValue(),
                 name : name
             },
             async : false,