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

您的位置:首頁技術(shù)文章
文章詳情頁

使用HttpClient增刪改查ASP.NET Web API服務(wù)

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

本篇體驗(yàn)使用HttpClient對ASP.NET Web API服務(wù)實(shí)現(xiàn)增刪改查。

創(chuàng)建ASP.NET Web API項(xiàng)目

新建項(xiàng)目,選擇"ASP.NET MVC 4 Web應(yīng)用程序"。

選擇"Web API"。

在Models文件夾下創(chuàng)建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文件夾下創(chuàng)建IProductRepository接口。

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

在Models文件夾下創(chuàng)建ProductRepository類,實(shí)現(xiàn)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文件夾下創(chuàng)建空的ProductController。

   public class ProductController : ApiController    {static readonly IProductRepository repository = new ProductRepository();//獲取所有public IEnumerable<Product> GetAllProducts(){    return repository.GetAll();}//根據(jù)id獲取public Product GetProduct(int id){    Product item = repository.Get(id);    if (item == null)    {throw new HttpResponseException(HttpStatusCode.NotFound);    }    return item;}//根據(jù)類別查找所有產(chǎn)品public IEnumerable<Product> GetProductsByCategory(string category){    returnrepository.GetAll().Where(p => string.Equals(p.Category, category, StringComparison.OrdinalIgnoreCase));}//創(chuàng)建產(chǎn)品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;}//更新產(chǎn)品public void PutProduct(int id, Product product){    product.Id = id;    if (!repository.Update(product))    {throw new HttpResponseException(HttpStatusCode.NotFound);    }}//刪除產(chǎn)品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 獲取到所有產(chǎn)品
http://localhost:1310/api/Product/1 獲取編號為1的產(chǎn)品

使用HttpClient查詢某個(gè)產(chǎn)品

在同一個(gè)解決方案下創(chuàng)建一個(gè)控制臺程序。

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

Install-Package Microsoft.AspNet.WebApi.Client

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

    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())    {//設(shè)置client.BaseAddress = new Uri("http://localhost:1310/");client.DefaultRequestHeaders.Accept.Clear();client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));//異步獲取數(shù)據(jù)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);}    }}

把控制臺項(xiàng)目設(shè)置為啟動項(xiàng)目。

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

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

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

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

使用HttpClient查詢所有產(chǎn)品

       static void Main(string[] args){    RunAsync().Wait();    Console.ReadKey();}static async Task RunAsync(){    using (var client = new HttpClient())    {//設(shè)置client.BaseAddress = new Uri("http://localhost:1310/");client.DefaultRequestHeaders.Accept.Clear();client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));//異步獲取數(shù)據(jù)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())    {//設(shè)置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);//異步獲取數(shù)據(jù)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())    {//設(shè)置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);}//異步獲取數(shù)據(jù)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())    {//設(shè)置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);}//異步獲取數(shù)據(jù)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);    }    }    }}

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

標(biāo)簽: ASP.NET
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产一区丝袜| 中文在线а√天堂| 国产精品视频一区二区三区 | 男女性色大片免费观看一区二区 | 国产精品片aa在线观看| 99视频精品视频高清免费| 国产成年精品| 成人影视亚洲图片在线| 精品视频一区二区三区四区五区| 亚洲女同av| 国产精品美女在线观看直播| 日韩一区二区三区免费视频| 日韩精品中文字幕一区二区| 国产精品99一区二区三区| 国产精品久久久久久av公交车| 日韩av资源网| 国产精品久久久久久久久久白浆 | 香蕉久久久久久久av网站| 快播电影网址老女人久久| 91看片一区| 亚洲成人一区| 亚洲三级网址| 麻豆国产精品| 99久久精品费精品国产| 99视频精品视频高清免费| 欧美日韩国产精品一区二区亚洲| 亚洲天堂黄色| 久久国产婷婷国产香蕉| 精品国产一区二| 99国产精品免费视频观看| 亚洲一区二区毛片| 国产精品午夜av| 在线一区视频观看| 亚洲精品视频一二三区| 日韩三区四区| 日本а中文在线天堂| 亚洲免费观看| 国产高清视频一区二区| 免费欧美一区| 美日韩一区二区三区| 欧美天堂亚洲电影院在线观看| 欧美日韩视频免费看| 久久久久久久久丰满| 日韩不卡一二三区| re久久精品视频| 欧美精品91| 日本大胆欧美人术艺术动态| 久久中文在线| 亚洲精品韩国| 成人在线黄色| 欧美一级网址| 视频一区二区欧美| 亚洲国产影院| av高清不卡| 精品久久影院| 欧美日本三区| 一区二区亚洲视频| 欧美综合另类| 精品国产免费人成网站| 国产欧美91| 日本三级亚洲精品| 视频一区二区中文字幕| 欧美+日本+国产+在线a∨观看| 精品国产精品国产偷麻豆 | 视频一区二区欧美| 麻豆精品蜜桃| 成人一区不卡| 日韩国产一区二区| 一本大道色婷婷在线| 国产资源在线观看入口av| 精品久久久亚洲| 影音先锋久久精品| 99精品小视频| 亚洲天堂久久| 欧美精品自拍| 久久av一区| 日韩中文欧美在线| 日韩午夜免费| 在线精品国产亚洲| 日韩三区四区| 国产精品香蕉| 成人在线黄色| 亚洲国产综合在线看不卡| 欧美日韩国产综合网| 国产免费成人| 青草久久视频| 久久影院一区二区三区| 99视频精品全国免费| 玖玖玖国产精品| 天堂成人国产精品一区| 99精品美女| 日韩在线观看一区二区三区| 91午夜精品| 日韩高清中文字幕一区二区| 美女网站久久| 国产一区二区三区国产精品| 在线亚洲精品| 精品理论电影在线| 亚洲综合小说| 欧美激情国产在线| 亚洲精品国模| 国产综合精品一区| 精品日韩在线| 日韩大片免费观看| 伊人精品久久| 久久国产直播| 欧美成人精品一级| 黄色aa久久| 麻豆精品久久| 日本综合字幕| 中文精品电影| 亚洲a在线视频| 在线免费观看亚洲| 少妇精品导航| 老司机精品在线| 视频一区二区欧美| 久久国产三级| 久久av中文| 国产日产高清欧美一区二区三区| 综合欧美亚洲| 国产不卡精品| 久久国产精品成人免费观看的软件| 成人污污视频| 久久九九精品| 日韩精品一区二区三区免费视频| 精品视频亚洲| 欧美综合二区| 视频一区二区国产| 国产精品v日韩精品v欧美精品网站| 国产欧美日韩精品一区二区三区| 中文字幕系列一区| 国产欧美丝祙| 精品日韩视频| 日本精品一区二区三区在线观看视频 | 日韩中文字幕无砖| 国产欧美激情| 欧美精品激情| 国产suv精品一区| 国产精品久久久久久久免费观看| 99国内精品| 欧洲亚洲一区二区三区| 亚洲人www| 美女精品在线| 久久久久一区| 欧美天堂视频| 欧美日韩在线精品一区二区三区激情综合| 国产成人久久精品麻豆二区 | 日本欧美国产| 亚洲国产不卡| 精品一区不卡| 日韩av电影一区| 快she精品国产999| 欧美日韩视频网站| 伊人久久高清| 深夜视频一区二区| 久久这里只有| 国产精品一区二区三区av麻| 蜜臀久久99精品久久久久宅男 | 麻豆精品99| 亚洲精品高潮| 91综合网人人| 日韩欧美精品一区| 国产成人精品亚洲线观看 | 黑人精品一区| 国产日韩三级| 日韩激情一区二区| 日韩精品久久久久久久软件91| 亚洲欧美日韩视频二区| 亚洲综合图色| 日本少妇一区| 四虎国产精品免费观看| 国产精品亚洲人成在99www| 国产精品最新自拍| 四虎精品一区二区免费| 欧美日本久久| 亚洲成av人片一区二区密柚| 亚洲a一区二区三区| 亚洲a在线视频| 久久精品卡一| 蜜臀av在线播放一区二区三区| 国产亚洲毛片在线| 国产精品流白浆在线观看| 在线视频观看日韩| 老司机精品在线| 黄色网一区二区| 天堂√中文最新版在线| 亚洲一区欧美激情| 国产精品视频一区二区三区 | 97国产精品| 色综合视频一区二区三区日韩 | 久久国产欧美日韩精品| 国产精品视频3p| 亚洲啊v在线| 日韩不卡一二三区| 国产精品亚洲综合在线观看| 国产高潮在线| 在线视频精品| 国产精品精品国产一区二区| 肉色欧美久久久久久久免费看| 亚洲最新av|