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






4.88/5 (4投票s)
在 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/";
深入研究案例
你可以有一个方法返回单个值(例如 int
、string
或 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
)。