成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:292日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
影音先锋久久久| 国产精品超碰97尤物18| 久久精品一区二区三区不卡| 国产一区中文字幕| 日本精品裸体写真集在线观看| 亚洲一区二区三区免费视频| 日韩午夜在线电影| 久久免费美女视频| www.欧美日韩| 精品久久久影院| 国产suv精品一区二区6| 欧美一区二区三区四区在线观看| 韩国成人福利片在线播放| 91久久人澡人人添人人爽欧美 | 国产欧美一区二区精品久导航| 99re热这里只有精品免费视频| 26uuu亚洲综合色欧美| 99久久精品国产导航| 国产亚洲成aⅴ人片在线观看| 欧美成熟视频| 久久久精品影视| 牛牛国产精品| 欧美激情在线一区二区| 国产专区一区| 亚洲美女区一区| 国产亚洲一区二区三区在线播放| 亚洲自拍偷拍欧美| 裸体一区二区| 久久av中文字幕片| 91麻豆精品国产91久久久使用方法| 国内外成人在线视频| 日韩一区二区三区在线| 国产九色sp调教91| 精品久久人人做人人爽| 欧美福利一区二区三区| 日韩理论片在线| 一区二区三区国产在线| 同产精品九九九| 欧美三区在线观看| 成人午夜激情片| 国产婷婷色一区二区三区在线| 亚洲午夜极品| 午夜精品一区二区三区三上悠亚| 91国产成人在线| 国产高清精品网站| 中文字幕国产一区二区| 亚洲欧美精品| 黄色成人免费在线| 精品福利一区二区三区| 亚洲国产高清一区| 男人操女人的视频在线观看欧美| 欧美日韩在线亚洲一区蜜芽| 成人av片在线观看| 亚洲色图视频网站| 在线一区二区三区四区| 风间由美一区二区av101| 国产精品午夜免费| 久久一本综合频道| 丰满少妇久久久久久久| 日韩一区中文字幕| 欧美性猛片xxxx免费看久爱| caoporen国产精品视频| 亚洲欧美乱综合| 欧美日韩国产三级| 欧美日韩国产精品一区二区亚洲| 亚洲午夜精品网| 欧美日韩黄色一区二区| 欧美尤物一区| 亚洲成a人片综合在线| 欧美一区二区三区四区久久| 亚洲无吗在线| 久久国产精品无码网站| 精品久久一区二区三区| 最新成人av网站| 极品少妇一区二区三区精品视频| 久久精品欧美日韩| 久久先锋影音| av在线这里只有精品| 亚洲一二三四区不卡| 欧美成人午夜电影| 国产精品日韩一区二区| 国产精品一区二区在线看| 国产清纯白嫩初高生在线观看91| 久久亚洲欧美| 女主播福利一区| 免费在线观看一区| 国产精品三级电影| 欧美日韩一区二区三区四区| 欧美日韩亚洲一区三区 | 国产综合激情| 国模娜娜一区二区三区| 亚洲日本丝袜连裤袜办公室| 欧美性大战久久久久久久蜜臀| 欧美日韩国产在线一区| 免费成人结看片| 国产精品国产三级国产普通话三级| 欧美熟乱第一页| 精品99视频| 国产激情视频一区二区在线观看| 一区二区三区四区国产精品| 欧美一级高清片在线观看| 国产伦精品一区二区三区照片91 | 亚洲成人在线免费| 精品国产乱码久久久久久久久| 国产日韩一区二区三区在线播放| 国产91对白在线观看九色| 色综合天天性综合| 免费欧美高清视频| 亚洲欧美日韩久久| 日韩精品资源二区在线| 久久网站免费| 激情另类综合| 国产成人aaaa| 日产欧产美韩系列久久99| 欧美国产一区二区| 91精品国产乱| 久久大逼视频| 好吊色欧美一区二区三区视频| 国产精品1区二区.| 天天色综合成人网| 亚洲视频综合在线| 国产亚洲午夜高清国产拍精品| 欧美四级电影在线观看| 亚洲一区二区三区精品动漫| 91视频.com| 国产成人高清在线| 麻豆精品在线视频| 亚洲一二三专区| 中文字幕一区二区三区色视频 | 好吊色欧美一区二区三区视频| 国产suv精品一区二区6| 日本aⅴ亚洲精品中文乱码| 亚洲精品高清视频在线观看| 久久伊人蜜桃av一区二区| 欧美二区乱c少妇| 在线免费观看日本欧美| 亚洲永久网站| 亚洲黄页一区| 狠狠入ady亚洲精品经典电影| 99精品视频中文字幕| 国产东北露脸精品视频| 久久国产精品99精品国产| 亚洲成人激情社区| 亚洲欧美日韩精品久久久久| 国产精品污www在线观看| 久久久久久亚洲综合影院红桃 | 99久久久久久| 国产精品一区一区| 精品亚洲免费视频| 日韩av在线免费观看不卡| 夜夜嗨av一区二区三区网页| 国产欧美va欧美不卡在线| 久久免费电影网| 久久新电视剧免费观看| 精品国产一二三| 欧美电视剧免费全集观看| 欧美日韩成人在线一区| 欧洲国内综合视频| 欧美亚洲愉拍一区二区| 久热国产精品| 在线中文字幕一区二区| 91成人免费在线视频| 在线观看一区二区精品视频| 蜜桃久久精品乱码一区二区| 久久国产99| 久久本道综合色狠狠五月| 香蕉国产精品偷在线观看不卡| 国产精品美女xx| 亚洲欧美日韩另类精品一区二区三区| 国产深夜精品| 99久久国产免费看| 91无套直看片红桃| 99久久er热在这里只有精品15| 成人国产一区二区三区精品| 成人激情综合网站| 99精品久久只有精品| 欧美黄色一区二区| 欧美午夜不卡| 亚洲人妖在线| 国产欧美成人| 乱人伦精品视频在线观看| 色呦呦一区二区三区| 欧美三级乱人伦电影| 7777精品久久久大香线蕉| 日韩欧美中文字幕公布| 欧美大胆一级视频| 国产午夜精品理论片a级大结局| 中文字幕av一区二区三区高| 国产精品天美传媒| 中文字幕一区二区三区不卡 | 九一九一国产精品| 激情综合网av| 高清不卡一区二区在线| 色综合天天综合网国产成人综合天| 欧美三级小说| 国产精品视区| 色视频一区二区| 欧美狂野另类xxxxoooo| 欧美大片一区二区三区| 国产日本一区二区|