2011-06-09 36 views
2

我知道这个问题有点含糊,但我不确定如何解释它。为Restful Web Service构建JSON配置的正确方法

我正在构建一个应用程序,它将与ASP.NET MVC WebService进行通信。

不是将所有宁静的URL都放在应用程序的所有位置,而是想设置一个包含WebService信息的配置文件。以下是我到目前为止。

var config = { 
    WebService: { 
     Url: 'http://webservice.myapp.com/', 
     Vimeo: { 
      Read: 'Vimeo/Read' 
     }, 
     Contact: { 
      Communicate: 'Contact/Communicate', 
      Contact:'Contact/Contact' 
     } 
    } 
}; 

虽然这个工作,当我设置我的JSONP请求,它看起来有点有趣。

$.ajax(config.WebService.Url + config.WebService.Vimeo.Read, { 
    crossDomain: true, 
    dataType: "jsonp", 
    success: function (data) { 
     $.each(data, function (i, item) { 
      videosToShow = data; 
     }); 
    } 
}); 

有没有更好的方法来解决这个问题?

+0

我不认为这看起来很有趣......你有没有理由把URL分成两部分? – Fosco 2011-06-09 19:39:38

+0

好吧,因为我将使用数十种服务,并且我不想将RESTful URI的域部分反复放入配置中。 – 2011-06-09 19:42:17

+0

然后我认为你做得很好。 – Fosco 2011-06-09 19:43:18

回答

0

我有点决定走不同的方向。

我已经建立了一个名为WebService(controller, action)

一息尚存,我提交如下

$.ajax(WebService("myController", "myAction"), { 
    crossDomain: true, 
    dataType: "jsonp", 
    success: function (data) { 
     $.each(data, function (i, item) { 
      // do stuff 
     }); 
    } 
}); 

作品如飞方法。

1

jQuery ajax对象是xmlhttp的一个很好的通用包装器,但是因为您正在构建额外的抽象层次,为什么不将$ .ajax包装到您自己的对象中,该对象接受配置类型并处理ajax以及可能会发生的任何错误优雅地结果。

你可以设计它,以便您的通话看起来是这样的:

root.ajax(config.WebService.Vimeo.Read, callback); 

然后,您可以在启动时配置URL的根在你的包裹Ajax对象一次。

root.ajax.rootUrl = config.WebService.Url 
+0

不确定这究竟是怎么回事...... – 2011-06-10 21:49:36

相关问题