65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 JSON.NET 从 Windows 窗体实用工具轻松测试 RESTful 方法

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.88/5 (4投票s)

2014 年 1 月 21 日

CPOL

2分钟阅读

viewsIcon

13290

在 Windows 窗体上使用 JSON.NET 轻松测试 RESTful 方法

我已表明我的观点

虽然标题说的是“REST 方法”,而且我主要考虑的是 ASP.NET Web API REST 方法,但我认为这对于 Web Services、WCF 调用等也有效。从现在开始,我将统称为“REST 方法”。

当你调用 REST 方法时,你将获得一个标量值、一个 JSON “记录”(数组中的一个元素),或者一个 JSON “记录”或元素的数组。

当你测试你编写的本地服务器时,你的基本字符串将类似于:“https://:28642/api/”。否则,如果你正在测试一个已经公开的 REST API(你自己的或别人的),它会略有不同,例如:“http://www.UMustBNuts.com/ToYou/”。

鉴于此,你可以轻松设置几个通用方法,你可以用任何使特定的 REST 调用与其他调用不同的东西来调用它们。首先,将你的基本 URI 全局添加到你的单元中,如下所示

private const string BASE_URI = "https://:28642/api/";

深入研究案例

你可以有一个方法返回单个值(例如 intstring 或 JSON 元素),如下所示

        private string GetRESTScalarVal(string uri)
        {
            var client = new WebClient();
            return client.DownloadString(BASE_URI + uri);
        }

还有一个方法返回 JSON 对象/元素的数组(使用 JSON.NET),如下所示

初步 - 不要害怕,它并不吓人

要使用以下代码片段,你需要将 JSON.NET (Newtonsoft.Json) 添加到你的项目中,然后将“using Newtonsoft.Json”和“using Newtonsoft.Json.Linq;”添加到你的代码单元中。

而且,你需要将一个 DataGridView “ plopped”(为了你的理解,“plopped”是一个技术术语,最初由 Rick Monday、Tuesday Weld、Wednesday Addams、Sweet Thursday、Joe Friday、Jeff Saturday、Billy Sunday 或 Billie Holliday 创造(我需要一个!(你难道看不出来吗?))放置到一个 Windows 窗体上,保留默认名称(“dataGridView1”)。现在(鼓声,请!),代码来了

       private JArray GetRESTData(string uri)
        {
            var webRequest = (HttpWebRequest) WebRequest.Create(uri);
            var webResponse = (HttpWebResponse) webRequest.GetResponse();
            var reader = new StreamReader(webResponse.GetResponseStream());
            string s = reader.ReadToEnd();
            return JsonConvert.DeserializeObject<jarray>(s);
        }

        private void Popul8TheGrid(string uri)
        {
            try
            {
                dataGridView1.DataSource = GetRESTData(BASE_URI + uri);
            }
            catch (WebException webex)
            {
                MessageBox.Show(string.Format("Eek, a mousey-pooh! ({0})", webex.Message));
            }
        }

一个案例

现在你可以像这样调用这些方法来获取标量或单个值

       MessageBox.Show(GetRESTScalarVal("duckbilledPlatypi/Count"));

...以及像这样来测试 JSON 元素的数组

       Popul8TheGrid("duckbilledPlatypi/1/42");

读者须知

上面的调用假设你有一个名为 duckbilledPlatypiController 的控制器,它具有返回你的 Repository 提供的的数据点数量的方法,以及一个接受两个 int 作为参数并返回一个 IEnumerable 的方法(大概,在这种情况下,是 DuckbilledPlatypus)。

进一步的证据

点击此句中的超链接,了解更多关于如何 构建扩展 ASP.NET Web API 盛宴的信息。

两个相关的文章是 在这里在这里

© . All rights reserved.