gpt4 book ai didi

asp.net - 使用 JSON.NET 在 ASP.NET 2.0 Web 应用程序上实现 JSON feed

转载 作者:行者123 更新时间:2023-12-02 15:53:34 25 4
gpt4 key购买 nike

我的任务是在 asp.net 网站上实现 JSON 提要,该提要将由第 3 方应用程序(例如 iPhone、Android 等)使用,我希望遵循最佳实践。

我想要实现的目标的一个示例类似于:http://api.entertainment.ie/restaurants/listbycounty.asp

我选择了 JSON.net api,因为这似乎是强烈推荐的。

我的 Google-fu 一定让我失望了,因为我找不到实现了 JSON.net 的 Asp.net Web 应用程序的完整示例代码,所以我不知道从哪里开始。

我的问题相当简单:

  • 我应该将这种提要创建为 ASPX 或 ASHX 文件吗?或者甚至是 .NET Web 服务? (请记住,将使用此源的工具位于 iPhone 等外部应用程序上)

我以 ASSX 和 ASPX 格式创建了一个测试源...这是代码(我使用 Subsonic 来填充集合)...其中任何一个都符合正确的路线吗?

ASPX:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Response.ContentType = "application/json"

Dim objWCounty As New WLocation.wCounty
Dim objVwCounty As ICollection(Of VwCounty) = objWCounty.GetCountyFromCountryID(Enums.Country.Ireland, True)

Dim sJSON As String = JsonConvert.SerializeObject(objVwCounty)

Response.Write(sJSON)

End Sub

ASHX:

Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

context.Response.ContentType = "application/json"

Dim objWCounty As New WLocation.wCounty
Dim objVwCounty As ICollection(Of VwCounty) = objWCounty.GetCountyFromCountryID(Enums.Country.Ireland, True)

Dim sJSON As String = JsonConvert.SerializeObject(objVwCounty)

context.Response.Write(sJSON)

End Sub

ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property

非常感谢!

最佳答案

在这种情况下,您肯定会希望使用处理程序,因为它的开销比实际的 .aspx 页面要少得多。

除了缺乏错误处理之外,您的实现从这里看起来不错。

我之前使用过 JSON.Net(注意 DateTime 格式),但我通常使用内置的 .Net JSON serializer现在与 WCF 结合。但是,如果您仅限于 .Net 2.0,那么它可能不适合您

更新:

我本来打算在评论中回复有关错误处理的问题,但它变得很长。所以...这是我对错误处理的想法。

错误处理可以像您想要的那样简单或复杂,但在处理服务时我通常遵循一些准则(这本质上就是您在这里所拥有的)。

  • 错误应该是已发布 API 的一部分
    • 服务就是一份契约(Contract),该契约(Contract)的使用者需要一种方法来了解是否出现问题,并进行相应的处理。您应该始终提供一些 token 或备用消息格式来指示发生了错误。一个简单的例子是具有特定含义的错误代码列表。
  • 在选择要包含的信息量时要顾及受众
    • 可以只向最终用户发送异常消息和堆栈跟踪,但最多可能会包含他们不关心的信息。更糟糕的是,您可能会向潜在的黑客提供有关他试图破坏的系统内部结构的有值(value)的详细信息。
    • 在很多情况下,只需说“嘿,出现了问题!”就足够了,但在其他情况下(例如内部 LOB)应用程序,您可能需要提供可以使用的票号或唯一 token 通过支持更好地解决问题。
  • 异常(exception)应该是异常(exception)!
    • 确保您的编码是防御性的!永远不要相信用户输入,并检查可能阻止操作成功的每个合理情况。如果数据可能丢失,那么您应该检查并通知用户。同样,在使用 JSON 时,创建表示某种返回代码的属性非常容易。
    • 未经处理的异常代表真正的错误,应该立即修复。对于这样的服务,您需要记录异常,吞掉它,并让最终用户知道发生了非常糟糕的事情。

带有错误代码的 JSON 包示例:

{
data{...},
error{...}
}

在上述情况下,如果错误属性存在,那么您就知道出了问题。

没有一种方法适合所有的错误处理方案,但无论你做什么,都要保持一致。制定良好的错误处理计划并遵循它比您所做的事情更重要。然而,没有计划肯定会给您和您的最终用户带来很多麻烦。

关于asp.net - 使用 JSON.NET 在 ASP.NET 2.0 Web 应用程序上实现 JSON feed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4218109/

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