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