如何为json_api_client gem的destroy方法添加请求体?
为DELETE请求的destroy方法添加请求体的实现
你这个思路完全没问题,而且确实符合JSON:API规范——正如你提到的,RFC 7231允许DELETE请求携带请求体,JSON:API也明确了这种操作的语义合法性。
你自行编写的代码已经能实现需求,这里可以优化下细节让代码更健壮:
def destroy(params = {}) # 用URI拼接路径避免手动拼接可能出现的格式问题 resource_path = URI.join(self.class.path, "/#{id}").to_s self.class.connection.delete( resource_path, body: params.to_json, headers: { 'Content-Type' => 'application/json' } ) end
额外提几个注意点:
- 要确认后端服务支持处理带请求体的DELETE请求,有些框架或服务器默认会忽略DELETE的请求体,需要提前检查配置;
- 显式设置
Content-Type头为application/json,能让服务器准确识别请求体格式; - 就算params是空对象,发送空JSON
{}也完全符合规范,不用额外做判断处理。
内容的提问来源于stack exchange,提问作者Dérick Hogan Pimenta
相关产品推荐
相关产品推荐

