Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何处理纯文本服务器响应?_Javascript_Api_Http_Rest_Angularjs - Fatal编程技术网

Javascript 如何处理纯文本服务器响应?

Javascript 如何处理纯文本服务器响应?,javascript,api,http,rest,angularjs,Javascript,Api,Http,Rest,Angularjs,我是AngularJS的新手,正在构建一个与服务器交互的应用程序。服务器有一个RESTAPI,但对一些方法用纯文本响应,对另一些方法用JSON响应。我使用AngularJS的$resource服务实现了一个简单的http请求方法 但是,当服务器响应是纯文本时,AngularJS中的响应是一个对象,响应词中的每个字符都有一个条目。我怎样才能(以一种好的方式)避开这个问题?理想情况下,我希望能够告诉我的服务何时需要纯文本,何时需要JSON,并在这两种情况下都能得到格式良好的响应。$resource是

我是AngularJS的新手,正在构建一个与服务器交互的应用程序。服务器有一个RESTAPI,但对一些方法用纯文本响应,对另一些方法用JSON响应。我使用AngularJS的
$resource
服务实现了一个简单的http请求方法


但是,当服务器响应是纯文本时,AngularJS中的响应是一个对象,响应词中的每个字符都有一个条目。我怎样才能(以一种好的方式)避开这个问题?理想情况下,我希望能够告诉我的服务何时需要纯文本,何时需要JSON,并在这两种情况下都能得到格式良好的响应。

$resource是处理Restful对象的方便包装器。它将自动尝试解析为JSON,并根据$resource定义填充对象

您最好使用非restful资源

这是一个较低级别的API,没有如此咄咄逼人的对象映射

e、 g

根据,您可以为资源指定一个自定义操作,该操作可以覆盖默认行为,即将响应从json转换为javascript对象。transformResponse函数的“data”参数将包含您的文本负载

在本例中,transformResponse方法返回一个包含字符串的对象,而不仅仅是字符串本身,因为否则它仍将尝试将字符串转换为数组

    var Stub = $resource('/files/:filename', {}, {'getText': {
        transformResponse: function(data, headersGetter, status) {
            return {content: data};
        }
    }});
要使用该资源,请调用自定义getText()操作,而不是普通的旧get():


这是一篇旧文章,但我认为它应该有一个新的答案。

我也有同样的问题。根据REST,POST操作的返回对象应该是新创建的对象的URI(在我的例子中是一个ID)。Angular在$resource helper中失败,因为它假定所有响应都是JSON。我想定制响应处理程序可以解决这个问题。。我们将对此进行试验。保持联系;)这是有效的,在我的例子中,我是以纯文本/纯文本的形式返回json数据的(故意的),但是$http仍然将其转换为对象而不是纯字符串,所以这个方法工作得最好,而且我仍然可以将我的资源用于其他函数。谢谢这是正确的答案为什么非restful资源??
    var Stub = $resource('/files/:filename', {}, {'getText': {
        transformResponse: function(data, headersGetter, status) {
            return {content: data};
        }
    }});
    Stub.getText({'filename': 'someFile.txt'}, function(response) {
        console.info("Content of someFile.txt = " . response.content);
    });