ember-数据和json-补丁请求
ember-data and json-patch requests
ember-data 可以在 model.save() 调用上发送 json-patch PATCH 吗?
(媒体类型 application/json-patch+json RFC6902)
文档说是,但没有详细信息:
测试它显示请求中包含整个模型的 PUT 请求。
我怀疑您的应用程序使用 RESTAdapter
而不是 JSONAPIAdapter
。
RESTAdapter was the default adapter before Ember Data 2.0 as stated here
您可以查看两个适配器 updateRecord
方法:
/**
Called by the store when an existing record is saved
via the `save` method on a model record instance.
The `updateRecord` method serializes the record and makes an Ajax (HTTP PUT) request
to a URL computed by `buildURL`.
See `serialize` for information on how to customize the serialized form
of a record.
@method updateRecord
@param {Store} store
@param {Model} type
@param {Snapshot} snapshot
@return {Promise} promise
*/
updateRecord(store, type, snapshot) {
const data = serializeIntoHash(store, type, snapshot, {});
let id = snapshot.id;
let url = this.buildURL(type.modelName, id, snapshot, 'updateRecord');
return this.ajax(url, 'PUT', { data });
}
updateRecord(store, type, snapshot) {
const data = serializeIntoHash(store, type, snapshot);
let url = this.buildURL(type.modelName, snapshot.id, snapshot, 'updateRecord');
return this.ajax(url, 'PATCH', { data: data });
}
如您所见,一个使用 PUT
,另一个使用 PATCH
。 JSONAPIAdapter 现在是默认的,这就是文档处理 PATCH
请求的原因。
如果您想使用 PATCH
而不是 PUT
并保留 RestAdapter
,您应该从 RestAdapter
扩展并修改 updateRecord
方法 :D
希望它能找到你;)
ember-data 可以在 model.save() 调用上发送 json-patch PATCH 吗? (媒体类型 application/json-patch+json RFC6902)
文档说是,但没有详细信息:
测试它显示请求中包含整个模型的 PUT 请求。
我怀疑您的应用程序使用 RESTAdapter
而不是 JSONAPIAdapter
。
RESTAdapter was the default adapter before Ember Data 2.0 as stated here
您可以查看两个适配器 updateRecord
方法:
/**
Called by the store when an existing record is saved
via the `save` method on a model record instance.
The `updateRecord` method serializes the record and makes an Ajax (HTTP PUT) request
to a URL computed by `buildURL`.
See `serialize` for information on how to customize the serialized form
of a record.
@method updateRecord
@param {Store} store
@param {Model} type
@param {Snapshot} snapshot
@return {Promise} promise
*/
updateRecord(store, type, snapshot) {
const data = serializeIntoHash(store, type, snapshot, {});
let id = snapshot.id;
let url = this.buildURL(type.modelName, id, snapshot, 'updateRecord');
return this.ajax(url, 'PUT', { data });
}
updateRecord(store, type, snapshot) {
const data = serializeIntoHash(store, type, snapshot);
let url = this.buildURL(type.modelName, snapshot.id, snapshot, 'updateRecord');
return this.ajax(url, 'PATCH', { data: data });
}
如您所见,一个使用 PUT
,另一个使用 PATCH
。 JSONAPIAdapter 现在是默认的,这就是文档处理 PATCH
请求的原因。
如果您想使用 PATCH
而不是 PUT
并保留 RestAdapter
,您应该从 RestAdapter
扩展并修改 updateRecord
方法 :D
希望它能找到你;)