Asp.Net Web API(二)

来源:http://www.goldns.net 作者:手机APP 人气:179 发布时间:2019-10-07
摘要:  始建一个Web API项目 第一步,创立以下项目 自然,你也足以创制三个Web API项目,利用 Web API模板,Web API模板使用ASP.Net MVC提供API的援助页。 添加Model       四个模型就是在你的应用程

 

图片 1始建一个Web API项目

第一步,创立以下项目

图片 2

自然,你也足以创制三个Web API项目,利用 Web API模板,Web API模板使用 ASP.Net MVC提供API的援助页。

添加Model

      四个模型就是在你的应用程序中显得数据的多少个目的。ASP.NET Web API 能够自行系列化你的模型到JSON,XML或部分别的格式,然后把已系列化的数码写入到HTTP响应新闻的正文。只要客户端能够读取系列化的数额,那么它一样能够反种类这些指标。大相当多的顾客端都得以深入分析JSON或XML。其余,顾客端可以证明它想要通过HTTP须要音讯中设置的吸收接纳标头的这种格式。

       然后大家在Models目录下创建贰个简约的展示商品的Model

namespace WebAPIDemo.Models
{
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Category { get; set; }
        public decimal Price { get; set; }
    }
}

  

添加Repository

      首先大家要求仓库储存产品的成团,分开手提式有线电话机大家的劳务是多少个好主意,这种措施,大家能够转移后备存款和储蓄,而不用修改服务器的落实,这种模型的安插性叫做仓库储存模型,首先创设贰个接口

namespace WebAPIDemo.Models
{
   public interface IProductRepository
    {
        IEnumerable<Product> GetAll();
        Product Get(int id);
        Product Add(Product item);
        void Remove(int id);
        bool Update(Product item);
    }
}

 临时大家把接口和促成类位居二个目录下,现在在Models目录下增加其他一个类,那么些类将落实IProductRepository接口

 1 namespace WebAPIDemo.Models
 2 {
 3     public class ProductRepository : IProductRepository
 4     {
 5         private List<Product> products = new List<Product>();
 6         private int _nextId = 1;
 7         public ProductRepository()
 8         {
 9             Add(new Product { Name = "一加5", Category = "一加", Price = 2999 });
10             Add(new Product { Name = "小米pro", Category = "小米", Price = 5599 });
11             Add(new Product { Name = "一加X", Category = "一加", Price = 1499 }); 
12         }
13         public Product Add(Product item)
14         {
15             if (item == null)
16                 throw new ArgumentNullException("item");
17             item.Id = _nextId++;
18             products.Add(item);
19             return item;
20         }
21 
22         public Product Get(int id)
23         {
24             return products.Find(y => y.Id == id);
25         }
26 
27         public IEnumerable<Product> GetAll()
28         {
29             return products;
30         }
31 
32         public void Remove(int id)
33         {
34             products.RemoveAll(y => y.Id == id);
35         }
36 
37         public bool Update(Product item)
38         {
39             if (item == null)
40                 throw new ArgumentNullException("item");
41             int index = products.FindIndex(y => y.Id == item.Id);
42             if (index < 0)
43                 return false;
44             products.RemoveAt(index);
45             products.Add(item);
46             return true;
47         }
48     }
49 }

添加Controller

       在ASP.NET Web API中,调整器正是三个拍卖HTTP诉求的指标。大家将加多四个调整器,它即能够重返一个货物的列表数据,也能够经过产品编号重返单个产品音讯。

        注意,假如您选取了ASP.NET MVC 已驾驭调控器,Web API调控器类似于MVC调节器,可是后续ApiController,并非Controller类

图片 3

1 namespace WebAPIDemo.Controllers
2 {
3     public class ProductController : ApiController
4     {
5         static IProductRepository repository= new ProductRepository();
6     }
7 }

加多CRUD的基本操作方法

  第多少个:获得全部产品音讯列表,在调整器中增加方法如下

1  public IEnumerable<Product> GetProducts()
2  {
3      return repository.GetAll();
4  }

那一个措施是以Get开头,所以经过预订映射Get必要,另外,因为不含有参数,它映射五个不分包在门路中的id字段的URubiconI

第4个方法:通过产品编号获取二个出品消息,在调整器加多方法如下

1 public Product GetProduct(int id)
2 {
3             var item = repository.Get(id);
4             if (item == null)
5                 //未找到抛出一个404的状态码异常
6                 throw new 
7                   HttpResponseException(HttpStatusCode.NotFound);
8             return item;
9 }

这么些方法的名称是以Get初阶但以此法子有三个名为id的参数。那些参数被映射到U君越I路线中的id字段。那么些Asp.Net Web API框架自动把id参数转变为科学的int数据类型,如若id无效,就能够抛出一个HttpResponseException相当。此特别将有框架转变到七个404错误。

其七个:依据种类查找产品音讯,在调整器中增添方法如下

1 public IEnumerable<Product> GetProductsByCategory(string category)
2 {
3             return repository.GetAll().Where(y => String.Equals(y.Category, category, StringComparison.OrdinalIgnoreCase));
4 }

一旦供给的UQashqaiI中包蕴查询字符串,那么些Web API试图在调控器方法的参数中来相配查询字符串。因而,窗体中“api/products?category=category”的UPAJEROI将映射到此办法。

第四个:增添三个新产品,在调节器加多的艺术如下

1 public Product PostProduct(Product item)
2 {
3             item = repository.Add(item);
4             return item;
5 }

请留心这么些方法的多个专门的学问:

      这么些措施的名字以“Post”发轫,为了创立多少个新产品,那么些客商端将发送四个HTTP Post诉求。那一个情势运用类型为Product的参数。在Web API中复杂类型的参数是从央浼音讯体中反系列化获得的,因而,我们期望客户端发送XML或JSON格式的一个出品对象的种类号表现格局

      此实现会做事,但它还十分不完全。理想状态下,大家愿意的HTTP响应。满含以下内容:

       响应代码:在暗许情状下,这一个Web API框架设置响应状态码为200(OK)。不过依赖这么些HTTP/1.1磋商,当POST央求在创制多个能源时,那一个服务端应该恢复生机境况201(Created)。地方:当服务端创造四个资源时,它应该在响应的Location标头中蕴藏这些财富的U中华VI。

      ASP.NET Web API使它轻松操作HTTP响应新闻。那些改正后的代码:

public HttpResponseMessage PostProduct(Product item)
{
            item = repository.Add(item);
            //创建返回对象HttpResposeMessage并将回复状态设置为201.
            HttpResponseMessage respose = Request.CreateResponse<Product>(HttpStatusCode.Created, item);
            String uri = Url.Link("DefaultApi", new { id = item.Id });
            //设置HttpResposeMessage标头中Locaion
            respose.Headers.Location = new Uri(uri);
            return respose;
}

   请注意:此方法重回类型未来是HttpResponseMessage。通过再次回到HttpResponseMessage并不是成品,大家能够垄断HTTP响应音讯,蕴含气象代码和职分标头的详细音讯。

  CreateResponse方法将会创立HttpResponseMessage,并自行将Product对象系列化表示情势写入到响应音信的正文中。

  第多个:通过PUT更新产品

1 public void PutProduct(int id,Product product)
2 {
3             product.Id = id;
4             if(!repository.Update(product))
5                 throw new HttpResponseException(HttpStatusCode.NotFound);
6 }

 方法名称以Put初阶,那样Web API就能够将其与PUT央浼相匹配。那几个措施有八个参数,七个是成品id和革新的成品,id参数是从U宝马X5I中拿走的,product参数是从央浼正文反体系化得来的。私下认可意况下,ASP.NET Web API框架从路由得到轻易的参数类型,从呼吁正文获取复杂的品种。

第多个法子:删除产品,在调控器增添代码如下。

1  public void DeleteProduct(int id)
2 {
3             Product item = repository.Get(id);
4             if (item == null)
5                 throw new HttpResponseException(HttpStatusCode.NotFound);
6             repository.Remove(id);
7 }

 要是去除成功,它能够回到状态200(OK)与实体的陈说本场所;要是除去依旧挂起,则赶回状态202(已接受);或状态与未有实体正文204(无内容)。在这种景色下,DeleteProduct方法具备void再次来到类型,因而ASP.NET Web API自动调换此情状代码204(无内容)

运转测验

  方法创制实现后大家就足以运作服务端进行测量试验了

图片 4

   上述测量检验我们发掘我们的路由只是“api/{controler}”就打响重返了GetProducts方法中的数据,那也是ASP.NET Web API与ASP.NET MVC 之间的界别。Web API路由得以未有{Action},只经过HTTP央求格局来相配路由,並且路由默许以api启示,假诺想要设置,在App_Start中WebApiConfig类中进行设置路由。

图片 5

 

本文由澳门新葡亰娱乐场发布于手机APP,转载请注明出处:Asp.Net Web API(二)

关键词:

上一篇:开启互联网纯线上诊断模式

下一篇:没有了

频道精选

最火资讯