/* jshint esversion:6, unused:true *//* global $ */constmethods={create:'POST',delete:'DELETE',get:'GET',query:'GET',patch:'PATCH',remove:'DELETE',save:'POST',update:'put'};letexports={options:{contentType:'application/json',dataType:'json'},addMethod(method,httpMethod){exports[method]=(url,data,options)=>{url=url.replace(/\{([^\w]*)(.+?)([^\w]*)\}/g,(match,before,prop,after)=>data[prop]?before+data[prop]+after:'');if(httpMethod!=='GET')data=JSON.stringify(data);return$.ajax($.extend(true,{},exports.options,{method:httpMethod},options,{url:url,data:data}));};},resource(url,actions,baseOptions){letret={};$.each($.extend({},methods,actions),(meth)=>{ret[meth]=(data,options)=>(exports[meth]||exports.save)(url,data,$.extend(true,{},baseOptions,actions[meth],options));});returnret;}};$.each(methods,exports.addMethod);exportdefaultexports;
Comments (1)
Steven Berlan
Example usage:
import{jqresource}from'./jq-resource';varobj={foo:'bar'};varres=jqresource.resource('that/resource{/id/}',{create:{url:'that/resource/create/'}});res.create(obj).then((data)=>{// assuming data contains an id property so you can invoke a save immediately on it.console.log("ok create",data);$.extend(obj,data);obj.foo='baz';res.save(obj).then(console.log.bind(console,"ok save"),console.log.bind(console,"fail save"));},console.log.bind(console,"fail create"));varobj2=jqresource.create('that/resource/create/',{foo:'biz'});
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.
Example usage: