我正在为我的雇主研究RESTful API服务的概念,但发现自己有点卡住了。
我已经开始处理GET请求,从视图中获取所有数据并根据参数(id)获取一些数据。但是,由于存储过程具有 TONNE 字段(140列),我对如何处理任何在其查询中具有相同行数的插入/更新语句感到有些不知所措。 / p>
我一直在寻找处理多个参数的解决方案,但我没有看到每行使用“?param = args”的好处。有没有办法通过传入对象或类似的东西使URL看起来稍微格式化?如果是这样,您将如何进行(压力)测试?
任何建议和意见将不胜感激! :)
答案 0 :(得分:0)
在请求正文中传递数据的示例:
创建您的身体内容:
var example = "Hello World";
Dictionary<string, string> pairs = new Dictionary<string, string>();
pairs.Add("ExampleData", example);
var formContent = new FormUrlEncodedContent(pairs);
var response = await PostAsync(YourRouteToRestApi, formContent);
Post方法看起来像这样:
public async Task<string> PostAsync(string apiCall, HttpContent data)
{
var client = new HttpClient();
try
{
var response = await client.PostAsync(apiCAll, data);
return await response.Content.ReadAsStringAsync();
}
catch (Exception ex)
{
// do something
}
}
现在你有一个干净的网址,没有数百?param=args
。
如果可以将所有参数封装到对象中,或者创建一个保存参数的Collection
(例如 Souvik Ghosh 建议)。您可以使用PosAsync
方法而不是Dictionary
数据传递此对象或集合
因此HttpClient
将处理Json序列化。
在您的WebApi中,您将获得以下数据:
public void Post([FromBody]YourObject stuff)
{
// do something
}