gpt4 book ai didi

.net - 使用asp.net mvc作为基于REST的终结点

转载 作者:行者123 更新时间:2023-12-04 18:17:32 25 4
gpt4 key购买 nike

我正在考虑使用ASP.Net MVC作为基于REST的服务的平台。我知道WCF内置了对REST服务的支持;但是,我正在根据请求返回多种类型的数据。

我希望客户端请求内容类型。因此,例如,如果他们发送text/html,我将把我的模型渲染为Html,如果他们请求text/xml,它将返回xml。我们也可以做JSON。

有人看到这个有什么问题吗?

不使用WCF可能会增加客户端在调用服务时的复杂性,因为它们将无法自动生成代理。但是,就我而言,客户端将是请求html的浏览器,或者是处理xml的java客户端库。

由于未使用WCF,因此我们需要保护服务的安全。但是,我认为我们可以使用表单例份验证来做到这一点。

这样做的好处是无论客户端请求哪种类型的数据都通过相同的 Controller /模型等...

最佳答案

尽管这是一个很好的起点,但Haack的解决方案当然不是解决问题的最佳方法。

首先,如果您使用的是Entity Framework(或者稍后决定从Linq切换到SQL),JsonResult将中断,因为它无法使用循环引用(通常是大多数数据模型)来序列化对象图。其次,它公开了同一资源的多个端点。

正确的方法是查看X-Requested-With HTTP header ,以确定这是否是XHR请求。或XML的Content-Type: text/xml请求 header 。

我建议您安装REST testing的Firefox插件,该插件可模拟XHR请求。篡改数据插件和其他一些插件可以更好地控制测试/调试。 WFetch是直接使用的原始HTTP请求工具,它对于测试和调试也是必不可少的。

我已经为此写了一个JSON/POX action filter。您只需要用[JsonPox]属性装饰您的类或方法,它们将根据客户端自动显示为JSON或XML。

关于.net - 使用asp.net mvc作为基于REST的终结点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/573363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com