c# - 如何使用接受 FromBody 参数的 API GET 方法
问题描述
如何在接受一个 FromUri 参数和第二个 FromBody 参数的 C# 中使用 Web API 2 GET 命令。我不知道如何在 GET 命令中发送正文,我需要使用 POST 命令吗?但如何?下面是我到目前为止写的代码。谢谢你。
API 代码
[HttpGet]
[ResponseType(typeof(IEnumerable<Student>))]
public IHttpActionResult Find([FromUri]string searchText,[FromBody]SearchType searchType)
{
//EF code to get data from DB
using (handler)
{
return Ok(handler.Find(searchText, searchType));
}
}
HttpClient 代码
static void Main(string[] args)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:55587/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
string aSearchText ="John";
SearchType aSearchType = SearchType.Name; //this is enum
Task<HttpResponseMessage> responseTask = client.GetAsync($"api/Student/{aSearchText}");
responseTask.Wait();
////////////////////
/// Code missing how to send "aSearchType" as a body in Get Command?
////////////////////
var ListTask = responseTask.Content.ReadAsAsync<IEnumerable<Student>>();
ListTask.Wait();
IEnumerable<Student> list = ListTask.Result;
foreach(Student s in list)
{
Console.WriteLine(s.Name);
}
}
解决方案
您可以将参数从正文传递到 HttpGet 操作,但这不合逻辑。
您可以使用 HttpPost 从正文发送数据。
[HttpPost]
[ResponseType(typeof(IEnumerable<Student>))]
public IHttpActionResult Find([FromBody]SearchType searchType,[FromUri]string searchText)
{
//EF code to get data from DB
using (handler)
{
return Ok(handler.Find(searchText, searchType));
}
}
string aSearchText ="John";
SearchType aSearchType = SearchType.Name; //this is enum
Task<HttpResponseMessage> responseTask = client.PostAsJsonAsync($"api/Student/{aSearchText}",aSearchType );
responseTask.Wait();
推荐阅读
- java - 如何在 Android 10 中打开活动(传入 voip 呼叫)
- java - 如何为石头、纸、剪刀游戏创建方法
- alexa - 如何通知我的 Alexa Skill 的客户有关新功能的信息?
- java - 为什么 log4j-slf4j-impl 不是无锁的?
- jenkins - 在 Jenkins 中使用 Contentful webhook
- javascript - webpack externals 给出错误“ReferenceError:require is not defined”
- vuejs2 - 在带有复选框的项目列表中,仅选中 1 个项目
- omnet++ - 如何为每条消息发送一个“结构”向量?
- python - 在 1D NumPy 数组中查找值的索引/位置(具有相同的值)
- json - 如何在 kotlin 中编辑嵌套的 JSON