From 61c7cebe76cd2bd557fdcf55fe40e39c75bb355b Mon Sep 17 00:00:00 2001 From: lichengyin Date: Mon, 11 Jan 2016 14:13:39 +0800 Subject: [PATCH] optimise logic --- src/logic/base.js | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/logic/base.js b/src/logic/base.js index 3d8f0af6..acdbed92 100644 --- a/src/logic/base.js +++ b/src/logic/base.js @@ -6,6 +6,35 @@ * @type {Class} */ export default class extends think.controller.base { + /** + * get validate method + * @return {} [] + */ + _getValidateItemMethod(itemData){ + let list = ['get', 'post', 'file']; + for(let i = 0, length = list.length; i < length; i++){ + let item = list[i]; + if(itemData[list[i]]){ + delete itemData[item]; + return item; + } + } + //for rest request + let method = this._isRest && this._method; + if(method){ + method = this.get(method); + } + if(!method){ + method = this.http.method.toLowerCase(); + } + if(method === 'put' || method === 'patch'){ + return 'post'; + } + if(list.indexOf(method) > -1){ + return method; + } + return 'post'; + } /** * parse validate data * { @@ -29,14 +58,9 @@ export default class extends think.controller.base { itemData = think.extend({}, itemData); } - let method = this.http.method.toLowerCase(); - if(itemData.get){ - method = 'get'; - delete itemData.get; - }else if(itemData.file){ - method = 'file'; - itemData.object = true; //when type is file, set data type to `object` - delete itemData.file; + let method = this._getValidateItemMethod(itemData); + if(method === 'file'){ + itemData.object = true; } itemData._method = method; itemData.value = this[method](name);