AngularJs补丁请求

时间:2015-10-28 08:27:39

标签: angularjs httprequest

我正在尝试使用http Patch方法通过我的API更新数据。但我收到错误响应或内部服务器错误。

这是我的JSON电话:

$http.patch(baseUrl + '/users/' + currentUserEmail,data).success(success).error(error)

1 个答案:

答案 0 :(得分:1)

您可以使用$ http.patch的可选第三个参数添加所需的标题:

var config = {headers: {'IF-Match': 'your-data'}};
$http.patch(baseUrl + '/users/' + currentUserEmail,data, config).success(success).error(error)

documentation提供有关自定义配置选项的信息。

如果您希望自动为每个请求添加自定义标头,可以使用$http interceptor

angular.module('app').factory('HttpInterceptor', function () {
  return {
    request: function (config) {
      if (config.method === 'PATCH')
         config.headers['IF-Match'] = 'your-data';
      return config;
    }
  };
});

angular.module('app').config(['$httpProvider', '$resourceProvider', function ($httpProvider, $resourceProvider) {
    // Add the interceptor to the $httpProvider to intercept http calls
    $httpProvider.interceptors.push('HttpInterceptor');
}])

编辑:回答有关如何从GET请求获取信息的评论。 在http拦截器中,您也可以拦截响应:

angular.module('app').factory('HttpInterceptor', function () {
 var etag = null;
  return {
    request: function (config) {
      if (config.method === 'PATCH')
         config.headers['IF-Match'] = etag;
      return config;
    },
   response: function (response) {
      if (response.config.method === 'GET')
          etag = reponse.config.headers['e-tag'];
        // Return the response or promise.
      return response || $q.when(response);
    },
  };
});