Ember JSON API 适配器 - 使用动态参数自定义请求 URL
Ember JSON API Adapter - customise request URL using dynamic param
当在路由中调用下面的动作时,默认Ember JSON API 适配器将发送一个PATCH
请求到${HOST}/${NAMESPACE}/${MODEL}/${ID}
。
saveChanges: function(record) {
return record.save();
},
我希望能够向 ${HOST}/${NAMESPACE}/${MODEL}/************/${ID}
发送单个 PATCH 请求,其中 ************
的值可以在调用 record.save()
时作为动态参数传递给操作。
有什么方法可以使用 JSONAPI 适配器来做到这一点,还是我必须只使用普通的 AJAX 请求?
您可以自定义您的应用程序 - 或 model-adapter
ember generate adapter application
或
ember generate adapter model-name
app/adapters/application.js 或 app/adapters/model-name.js
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
namespace: 'api',
urlForUpdateRecord(id, modelName, snapshot) {
let originalUpdateURL = this._super(...arguments);
let { adapterOptions } = snapshot;
if (adapterOptions && adapterOptions.customString) {
let modelPath = this.pathForType(modelName);
return originalUpdateURL.replace(`/${modelPath}/`, `/${modelPath}/${adapterOptions.customString}/`);
}
return originalUpdateURL;
}
});
之后,您可以通过传递的 adapterOptions 调用模型的 save-method:
this.get('model').save({
adapterOptions: { customString: 'hello-world' }
});
之后您的补丁 URL 将如下所示:
/api/your-model/hello-world/1
当在路由中调用下面的动作时,默认Ember JSON API 适配器将发送一个PATCH
请求到${HOST}/${NAMESPACE}/${MODEL}/${ID}
。
saveChanges: function(record) {
return record.save();
},
我希望能够向 ${HOST}/${NAMESPACE}/${MODEL}/************/${ID}
发送单个 PATCH 请求,其中 ************
的值可以在调用 record.save()
时作为动态参数传递给操作。
有什么方法可以使用 JSONAPI 适配器来做到这一点,还是我必须只使用普通的 AJAX 请求?
您可以自定义您的应用程序 - 或 model-adapter
ember generate adapter application
或
ember generate adapter model-name
app/adapters/application.js 或 app/adapters/model-name.js
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
namespace: 'api',
urlForUpdateRecord(id, modelName, snapshot) {
let originalUpdateURL = this._super(...arguments);
let { adapterOptions } = snapshot;
if (adapterOptions && adapterOptions.customString) {
let modelPath = this.pathForType(modelName);
return originalUpdateURL.replace(`/${modelPath}/`, `/${modelPath}/${adapterOptions.customString}/`);
}
return originalUpdateURL;
}
});
之后,您可以通过传递的 adapterOptions 调用模型的 save-method:
this.get('model').save({
adapterOptions: { customString: 'hello-world' }
});
之后您的补丁 URL 将如下所示: /api/your-model/hello-world/1