日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

使用HttpClient增刪改查ASP.NET Web API服務

瀏覽:362日期:2022-06-08 15:57:54

本篇體驗使用HttpClient對ASP.NET Web API服務實現增刪改查。

創建ASP.NET Web API項目

新建項目,選擇"ASP.NET MVC 4 Web應用程序"。

選擇"Web API"。

在Models文件夾下創建Product類。

    public class Product    {public int Id { get; set; }public string Name { get; set; }public string Category { get; set; }public decimal Price { get; set; }    }

在Models文件夾下創建IProductRepository接口。

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

在Models文件夾下創建ProductRepository類,實現IProductRepository接口。

   public class ProductRepository : IProductRepository    {private List<Product> products = new List<Product>();private int _nextId = 1;public ProductRepository(){    Add(new Product() {Name = "product1", Category = "sports", Price = 88M});    Add(new Product() { Name = "product2", Category = "sports", Price = 98M });    Add(new Product() { Name = "product3", Category = "toys", Price = 58M });}public IEnumerable<Product> GetAll(){    return products;}public Product Get(int id){    return products.Find(p => p.Id == id);}public Product Add(Product item){    if (item == null)    {throw new ArgumentNullException("item");    }    item.Id = _nextId++;    products.Add(item);    return item;}public bool Update(Product item){    if (item == null)    {throw new ArgumentNullException("item");    }    int index = products.FindIndex(p => p.Id == item.Id);    if (index == -1)    {return false;    }    products.RemoveAt(index);    products.Add(item);    return true;}public void Remove(int id){    products.RemoveAll(p => p.Id == id);}    }

在Controllers文件夾下創建空的ProductController。

   public class ProductController : ApiController    {static readonly IProductRepository repository = new ProductRepository();//獲取所有public IEnumerable<Product> GetAllProducts(){    return repository.GetAll();}//根據id獲取public Product GetProduct(int id){    Product item = repository.Get(id);    if (item == null)    {throw new HttpResponseException(HttpStatusCode.NotFound);    }    return item;}//根據類別查找所有產品public IEnumerable<Product> GetProductsByCategory(string category){    returnrepository.GetAll().Where(p => string.Equals(p.Category, category, StringComparison.OrdinalIgnoreCase));}//創建產品public HttpResponseMessage PostProduct(Product item){    item = repository.Add(item);    var response = Request.CreateResponse(HttpStatusCode.Created, item);    string uri = Url.Link("DefaultApi", new {id = item.Id});    response.Headers.Location = new Uri(uri);    return response;}//更新產品public void PutProduct(int id, Product product){    product.Id = id;    if (!repository.Update(product))    {throw new HttpResponseException(HttpStatusCode.NotFound);    }}//刪除產品public void DeleteProduct(int id){    Product item = repository.Get(id);    if (item == null)    {throw new HttpResponseException(HttpStatusCode.NotFound);    }    repository.Remove(id);}    }

在瀏覽器中輸入:

http://localhost:1310/api/Product 獲取到所有產品
http://localhost:1310/api/Product/1 獲取編號為1的產品

使用HttpClient查詢某個產品

在同一個解決方案下創建一個控制臺程序。

依次點擊"工具","庫程序包管理器","程序包管理器控制臺",輸入如下:

Install-Package Microsoft.AspNet.WebApi.Client

在控制臺程序下添加Product類,與ASP.NET Web API中的對應。

    public class Product    {public string Name { get; set; }public double Price { get; set; }public string Category { get; set; }     }

編寫如下:

static void Main(string[] args){    RunAsync().Wait();    Console.ReadKey();}static async Task RunAsync(){    using (var client = new HttpClient())    {//設置client.BaseAddress = new Uri("http://localhost:1310/");client.DefaultRequestHeaders.Accept.Clear();client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));//異步獲取數據HttpResponseMessage response = await client.GetAsync("/api/Product/1");if (response.IsSuccessStatusCode){    Product product = await response.Content.ReadAsAsync<Product>();    Console.WriteLine("{0}\t{1}元\t{2}",product.Name, product.Price, product.Category);}    }}

把控制臺項目設置為啟動項目。

HttpResponseMessage的IsSuccessStatusCode只能返回true或false,如果想讓響應拋出異常,需要使用EnsureSuccessStatusCode方法。

try{    HttpResponseMessage response = await client.GetAsync("/api/Product/1");    response.EnsureSuccessStatusCode();//此方法確保響應失敗拋出異常}catch(HttpRequestException ex){    //處理異常}

另外,ReadAsAsync方法,默認接收MediaTypeFormatter類型的參數,支持 JSON, XML, 和Form-url-encoded格式,如果想自定義MediaTypeFormatter格式,參照如下:

var formatters = new List<MediaTypeFormatter>() {    new MyCustomFormatter(),    new JsonMediaTypeFormatter(),    new XmlMediaTypeFormatter()};resp.Content.ReadAsAsync<IEnumerable<Product>>(formatters);

使用HttpClient查詢所有產品

       static void Main(string[] args){    RunAsync().Wait();    Console.ReadKey();}static async Task RunAsync(){    using (var client = new HttpClient())    {//設置client.BaseAddress = new Uri("http://localhost:1310/");client.DefaultRequestHeaders.Accept.Clear();client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));//異步獲取數據HttpResponseMessage response = await client.GetAsync("/api/Product");if (response.IsSuccessStatusCode){    IEnumerable<Product> products = await response.Content.ReadAsAsync<IEnumerable<Product>>();    foreach (var item in products)    {Console.WriteLine("{0}\t{1}元\t{2}", item.Name, item.Price, item.Category);    }    }    }}

使用HttpClient添加

       static void Main(string[] args){    RunAsync().Wait();    Console.ReadKey();}static async Task RunAsync(){    using (var client = new HttpClient())    {//設置client.BaseAddress = new Uri("http://localhost:1310/");client.DefaultRequestHeaders.Accept.Clear();client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));//添加var myProduct = new Product() { Name = "myproduct", Price = 88, Category = "other" };HttpResponseMessage response = await client.PostAsJsonAsync("api/Product", myProduct);//異步獲取數據response = await client.GetAsync("/api/Product");if (response.IsSuccessStatusCode){    IEnumerable<Product> products = await response.Content.ReadAsAsync<IEnumerable<Product>>();    foreach (var item in products)    {Console.WriteLine("{0}\t{1}元\t{2}", item.Name, item.Price, item.Category);    }    }    }}

使用HttpClient修改

       static void Main(string[] args){    RunAsync().Wait();    Console.ReadKey();}static async Task RunAsync(){    using (var client = new HttpClient())    {//設置client.BaseAddress = new Uri("http://localhost:1310/");client.DefaultRequestHeaders.Accept.Clear();client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));//添加 HTTP POSTvar myProduct = new Product() { Name = "myproduct", Price = 100, Category = "other" };HttpResponseMessage response = await client.PostAsJsonAsync("api/product", myProduct);if (response.IsSuccessStatusCode){    Uri pUrl = response.Headers.Location;    //修改 HTTP PUT    myProduct.Price = 80;   // Update price    response = await client.PutAsJsonAsync(pUrl, myProduct);}//異步獲取數據response = await client.GetAsync("/api/Product");if (response.IsSuccessStatusCode){    IEnumerable<Product> products = await response.Content.ReadAsAsync<IEnumerable<Product>>();    foreach (var item in products)    {Console.WriteLine("{0}\t{1}元\t{2}", item.Name, item.Price, item.Category);    }    }    }}

使用HttpClient刪除

static void Main(string[] args){    RunAsync().Wait();    Console.ReadKey();}static async Task RunAsync(){    using (var client = new HttpClient())    {//設置client.BaseAddress = new Uri("http://localhost:1310/");client.DefaultRequestHeaders.Accept.Clear();client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));//添加 HTTP POSTvar myProduct = new Product() { Name = "myproduct", Price = 100, Category = "other" };HttpResponseMessage response = await client.PostAsJsonAsync("api/product", myProduct);if (response.IsSuccessStatusCode){    Uri pUrl = response.Headers.Location;    //修改 HTTP PUT    myProduct.Price = 80;   // Update price    response = await client.PutAsJsonAsync(pUrl, myProduct);    //刪除 HTTP DELETE    response = await client.DeleteAsync(pUrl);}//異步獲取數據response = await client.GetAsync("/api/Product");if (response.IsSuccessStatusCode){    IEnumerable<Product> products = await response.Content.ReadAsAsync<IEnumerable<Product>>();    foreach (var item in products)    {Console.WriteLine("{0}\t{1}元\t{2}", item.Name, item.Price, item.Category);    }    }    }}

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對的支持。如果你想了解更多相關內容請查看下面相關鏈接

標簽: ASP.NET
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
天堂а√在线最新版中文在线| 国产精品97| 日本中文字幕一区二区| 日本午夜精品久久久| 欧美视频久久| 成人午夜网址| 91精品亚洲| 偷拍亚洲精品| 精品视频高潮| 欧美另类专区| 久久国产生活片100| 国产精品久久观看| 午夜电影亚洲| 91福利精品在线观看| av中文资源在线资源免费观看| 免费av一区二区三区四区| 亚洲精品少妇| 正在播放日韩精品| 丝袜a∨在线一区二区三区不卡| 欧美一区网站| 亚洲先锋成人| 国产精品白浆| 欧美日韩免费观看一区=区三区 | 青青草伊人久久| 日韩精品不卡一区二区| 首页国产欧美久久| 国产中文欧美日韩在线| 久久香蕉精品| 日韩av首页| 欧美亚洲网站| 欧美不卡在线| 精品一区二区三区的国产在线观看| 欧美日韩高清| 精品午夜视频| 日韩高清二区| 亚洲精品2区| 精品欧美日韩精品| 免播放器亚洲一区| 久久久777| 欧美韩一区二区| 免费在线视频一区| 亚洲精品一级二级| 麻豆精品蜜桃视频网站| 一区二区亚洲视频| 99久久九九| 成人亚洲精品| 欧美日本二区| 丝袜亚洲精品中文字幕一区| 亚洲va中文在线播放免费| 国产精品自在| 日本中文字幕不卡| 久久aⅴ国产紧身牛仔裤| 亚洲成人一区在线观看| 麻豆久久久久久| 日韩一二三区在线观看| 伊人影院久久| 欧美另类综合| 激情视频一区二区三区| 精品中文字幕一区二区三区四区| 欧美片第1页综合| 免费观看在线综合| 日韩亚洲精品在线| 香蕉人人精品| 夜鲁夜鲁夜鲁视频在线播放| 欧美日韩夜夜| 日本99精品| 天海翼亚洲一区二区三区| 先锋影音久久久| 欧美大黑bbbbbbbbb在线| 亚洲成人精品| 久久理论电影| 成人羞羞视频播放网站| а√在线中文在线新版| 久久精品色播| 精品视频网站| 久久影视三级福利片| 国产精品红桃| 国产精品白浆| 精品日本视频| 中文字幕高清在线播放| 电影亚洲精品噜噜在线观看| 成人在线免费观看网站| 成人精品高清在线视频| 国产成人精品亚洲线观看| 色婷婷色综合| 麻豆精品蜜桃| 亚洲精品一区二区妖精| 日韩亚洲精品在线| 蜜臀av亚洲一区中文字幕| 免费一级片91| 日韩国产在线一| 欧美亚洲一区二区三区| 久久99影视| 日韩国产一区二区| 激情综合网站| 免费精品视频最新在线| 日本久久一区| 免费视频一区二区三区在线观看| 91亚洲人成网污www| av一区在线| 亚洲激情不卡| 深夜日韩欧美| 欧美精品成人| 欧美三区四区| 亚洲欧美日韩专区| 日韩高清不卡一区二区| 老司机免费视频一区二区| 中文字幕在线视频网站| 精品一区毛片| 一区二区三区国产盗摄| 欧美日韩亚洲一区在线观看| 国产在线观看91一区二区三区| 色黄视频在线观看| 日韩中文在线电影| 久久亚洲图片| 亚洲精品三级| 麻豆中文一区二区| 正在播放日韩精品| 三级在线观看一区二区| 7777精品| 日韩免费看片| 久久午夜影视| 国产一区一一区高清不卡| 婷婷综合网站| 国产精品极品在线观看| 精品丝袜在线| 一区二区电影在线观看| 麻豆高清免费国产一区| 好看的av在线不卡观看| 91成人福利| 亚洲女同av| 免费视频一区二区| 久久影院一区二区三区| 亚洲一区国产一区| 国产精品久久久久久模特 | 国产精品s色| 亚洲精品在线观看91| 国产精品啊v在线| 欧美精品自拍| 精品久久国产一区| 亚洲精品在线a| 久久激情一区| 国产精品日韩精品在线播放| 一本一本久久| 天堂8中文在线最新版在线| 婷婷综合一区| 国产综合视频| 老牛国内精品亚洲成av人片| 在线精品视频在线观看高清| 日韩和欧美一区二区三区| 日韩中文影院| 国产亚洲一区| 夜夜嗨一区二区| 欧美三区四区| 牛牛精品成人免费视频| 亚洲三区欧美一区国产二区| 日韩精品中文字幕第1页| 久久精品999| 香蕉视频成人在线观看| 欧美成a人免费观看久久| 久久黄色影视| 亚洲日韩中文字幕一区| 免费av一区| 日韩成人三级| 国产一区二区三区不卡视频网站 | 青草久久视频| 中文字幕乱码亚洲无线精品一区| 久久久久国产精品一区二区| 精品国产aⅴ| 国产精品自在| 久久狠狠久久| 日本免费在线视频不卡一不卡二| 国产亚洲一级| 国产精品7m凸凹视频分类| 日本不良网站在线观看| 国产精品网在线观看| 青草国产精品久久久久久| 亚洲精一区二区三区| 久久高清免费观看| 黄色av一区| 一区在线视频观看| 欧美日韩国产免费观看 | 欧美一级二级视频| 欧美日韩一区二区三区不卡视频 | 欧美国产极品| 久久成人福利| 国产精品xxx在线观看| 国产精品一级| 国产精品1区在线| 国产精品多人| 久久三级毛片| 三上亚洲一区二区| 欧美亚洲日本精品| 欧美成a人免费观看久久| 久久影视一区| 欧美精选一区二区三区| 在线一区视频| 天海翼精品一区二区三区| 婷婷综合一区| 国产亚洲欧美日韩在线观看一区二区 |