gpt4 book ai didi

c# - MVC 4 WebAPI 中的操作

转载 作者:行者123 更新时间:2023-11-30 20:55:06 26 4
gpt4 key购买 nike

我一直在关注http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api创建以下 Controller 后,我得到了意想不到的结果...

public class ProductsController : ApiController
{
Product[] products = new Product[]
{
new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
};

public IEnumerable<Product> GetAllProducts()
{
return products;
}

public Product GetProductById(int id)
{
var product = products.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return product;
}
}

我希望能够像这样调用电话:

/api/products/GetAllProducts

但这行不通。相反,我可以简单地调用:

/api/products

它实际上执行 GetAllProducts() 中描述的过程。为什么这不能按预期工作?

最佳答案

因为在 WebApi 框架中,假设您需要“Get”方法。

您熟悉不同的 http 动词吗?发布、获取、放置、删除?当您在浏览器中键入 url 时,它会发出 Get 请求。框架看到这一点并假设您想要 GetAllProducts。

如果您有一个 DeleteAllProducts,并向 /api/products 发出删除请求,它将运行那个。

如果您有一个 GetProduct(int id) 并向 api/products/1 发出 Get 请求(例如,通过在浏览器地址栏中键入)将执行 GetProcuct(1)

将其视为基于 CRUD 的 Controller 。您可以只执行名为 Get、Post、Put、Delete 的操作,它会根据所使用的 http 动词运行这些操作。想要更新产品?它类似于 public ActionResult Post(int id, [FromBody]Product p),您可以通过对/api/products/1 的 POST 请求来调用它。当然,需要在请求正文中发送产品 Json/XML 才能进行序列化。

关于c# - MVC 4 WebAPI 中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18516916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com