0

我目前正在通过 ASP.Net WebAPI 技术创建 Restful API。我有 2 个与 WebAPI 相关的问题

我在下面做了:

  1. 在 Controller 类中创建以下方法:

    公共 HttpResponseMessage PostOrderData(OrderParam OrderInfo)

  2. 根据参数 OrderInfo,查询 SQL Server 并获取订单列表。
  3. 使用集合对象设置 Response.Content:
List<Orders> ordList = new List<Orders>();  
//filled the ordList from SQL query result  
var response = Request.CreateResponse<List<Orders>>(HttpStatusCode.OK, ordList);
  1. 在客户端,
OrderParam ordparam = new OrderParam();  
response = client.PostAsJsonAsync("api/order", ordparam).Result;  
if (response.IsSuccessStatusCode)  
{  
List<Orders> mydata = response.Content.ReadAsAsync<List<Orders>>().Result;  
}

所以问题:将数据发布到服务器以获取数据是否可以,即使用 Get 的 Post 数据的使用是否正确?方法有什么缺点吗?(一个缺点是:我无法直接从浏览器查询)我在这里使用了 Post,因为参数“OrderParam”将来可能会扩展,并且由于 URL 长度的增加可能会出现问题。

第二个问题是:我使用类作为参数和返回对象,即 OrderParam 和 Orders。现在这个 web api 的消费者(客户)是不同的客户,他们将通过 .Net (C#) 或通过 Jquery/JS 使用 API。那么我们是否需要将这个包含 OrderParam 和 Orders 类定义的类文件手动传递给每个客户端?并在上述课程有任何变化时每次发送给客户?

提前感
谢沙阿

4

2 回答 2

1

通常没有。

POST 既不安全也不具有幂等性——因此无法缓存。它适用于您正在更改服务器上的状态的情况。

如果您有很大的标准,则需要重新设计,但在大多数情况下,URL 片段或查询字符串参数都可以工作。看看 OData,它使用查询字符串进行非常复杂的查询并使用 GET。

关于第二个问题,也没有。服务器可以公开模式(类似于 WSDL)或文档,但不应该知道客户端。

于 2013-09-06T11:21:31.383 回答
0

是的,您可以,RESTFUL 与安全性无关,它只是一个约定,对于 Web API,您可以使用它,因为您不需要对 Web API 进行任何缓存。

于 2018-08-06T11:47:07.030 回答