Rest 在Web API中使用Post而不是Get来获取数据是否正确
我目前正在通过ASP.NETWebAPI技术创建RESTfulAPI。我有两个关于WebAPI的问题 我做了以下工作:Rest 在Web API中使用Post而不是Get来获取数据是否正确,rest,asp.net-web-api,Rest,Asp.net Web Api,我目前正在通过ASP.NETWebAPI技术创建RESTfulAPI。我有两个关于WebAPI的问题 我做了以下工作: 在控制器类中创建了以下方法: 公共HttpResponseMessage PostOrderData(OrderParam OrderInfo) 根据参数OrderInfo,查询SQL Server并获取订单列表 设置集合对象的响应内容: List ordList=newlist(); //从SQL查询结果填充ordList var response=Request.Crea
List ordList=newlist();
//从SQL查询结果填充ordList
var response=Request.CreateResponse(HttpStatusCode.OK,ordList);
orderpram orderpram=neworderpram();
response=client.PostAsJsonAsync(“api/order”,ordparam).Result;
if(响应。IsSuccessStatusCode)
{
List mydata=response.Content.ReadAsAsync().Result;
}
所以问题是:将数据发布到服务器以获取数据(即使用Post数据代替Get)是否正确?这种方法有缺点吗?(一个缺点是:我无法直接从浏览器中查询)我在这里使用了Post,因为参数“OrderParam”将来可能会扩展,并且可能会因为URL长度的增加而出现问题
第二个问题是:我使用类作为参数和返回对象,即OrderParam和Orders。现在,这个web api的消费者(客户端)是不同的客户,他们将通过.Net(C#)或Jquery/JS使用api。那么,我们是否需要将包含OrderParam和Orders类定义的类文件手动传递给每个客户机?并且每次发送给客户的时候上面的类会有什么变化
提前感谢沙阿通常不会 POST既不安全也不幂等-因此无法缓存。它用于更改服务器状态的情况 如果你有一个大的critieria,你需要重新设计,但在大多数情况下,URL片段或查询字符串参数可以工作。看看OData,它使用querystring进行非常复杂的查询,并使用GET
关于第二个问题,也不是。服务器可以公开模式(类似于WSDL)或文档,但不应该知道客户机。是的,RESTFUL与安全无关,它只是一种约定,对于Web API,您可以使用它,因为您不需要对Web API进行任何缓存。说“POST不安全”,那意味着删除和放置是安全的吗?我认为这与安全无关,SSL/TSL正在处理安全问题。还有一件事,这个问题是关于WebAPI的,所以使用缓存不再是一个问题,我们不想使用浏览器缓存来实现WebAPI
List<Orders> ordList = new List<Orders>();
//filled the ordList from SQL query result
var response = Request.CreateResponse<List<Orders>>(HttpStatusCode.OK, ordList);
OrderParam ordparam = new OrderParam();
response = client.PostAsJsonAsync("api/order", ordparam).Result;
if (response.IsSuccessStatusCode)
{
List<Orders> mydata = response.Content.ReadAsAsync<List<Orders>>().Result;
}