c# - 如何使用 mvc 控制器使用多个参数化的 web api
问题描述
我正在使用需要两个参数的MVC 控制器使用web api。根据参数,数据将以 Json 格式返回。如何使用带有两个参数的 api?api-url:http ://www.example.com/apiname/methodname/ 参数:param1 param2
api-key 详细信息: api-key:x-api-key api-key 值:apikeyvalue
示例:http ://www.example.com/apiname/methodname/param1/param2
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(@"apiurl");
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("x-api-key", "apikeyvalue");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//HTTP GET
var responseTask = client.GetAsync("GetAttendances");
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
var readTask = result.Content.ReadAsAsync<IEnumerable<MonitoringCallsViewModel>>();
readTask.Wait();
}
else //web api sent error response
{
//log response status here..
ModelState.AddModelError(string.Empty, "Server error. Please contact administrator.");
}
}
}
解决方案
我从您的解释中没有得到太多细节,但您可以通过 2 种方式使用 api 端点。第一个是api通过查询获取参数,您可以将这些变量设置为查询(请求url),如下所示。
public static string YourUrlSetterFunc(string baseUri, int id, int categoryId)
{
return $"{baseUri}/endpoint-route?firstParam={firstParam}&secondPram={secondPram}";
}
或者您可以设置那些不是从 url 获取的变量,它们通过适当的 HttpClient 方法调用 FormData 槽。示例如下所示。
var serializeObject = _jsonSerializer.Serialize(YourClassThatHoldsParams);
using (var requestContent = new StringContent(serializeObject, System.Text.Encoding.UTF8, "application/json"))
{
using (var responseMessage = await PostAsync(requestUri, requestContent))
{
response = _jsonSerializer.DeSerialize<TV>(await responseMessage.Content.ReadAsStringAsync());
}
}
通过这种方式,您可以将 JSON 响应读取为字符串,然后将其反序列化为您想要的对象。希望这能解决您的问题。
推荐阅读
- c++ - 如何使用静态变量记住最后传递的参数
- c - 嵌套结构中用户输入二维数组的语法?
- r - 缓存一个从 S3 读取每日更新数据集的闪亮仪表板?
- flutter - Flutter:SizedBox Vs Container,为什么使用一个而不是另一个?
- vba - vba 在 div 中检索 href
- javascript - 在 Vue 中初始化“marker-animate-unobtrusive”失败
- javascript - 如何将“部分”更改为可更改的类或 ID?
- three.js - 三.js。为什么这个 RGBA 纹理不会改变相关的材质不透明度?
- ajax - 准备好中间图后立即更新网站
- sublimetext3 - 如何让 Sublime Text 识别我的 .sublime-syntax 文件