WebAPI入门到进阶

前言:

  webapi分为两种创建形式:1、单独的webapi项目;2、放到mvc项目里

  post(增加)、Delete(删除)、Put(修改)、Get(查询)

1、创建基本的web项目

 2、api代码

 public class TestController : ApiController
    {
        // GET api/<controller>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/<controller>/5
        public string Get(int id)
        {
            return "value";
        }

        // POST api/<controller>
        public void Post([FromBody]string value)
        {
        }

        // PUT api/<controller>/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/<controller>/5
        public void Delete(int id)
        {
        }
    }
View Code

eg:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using Newtonsoft.Json;
using System.Web.Mvc;
using WebApi.Models;

namespace WebApi.Controllers
{
    public class TestController : ApiController
    {

        [System.Web.Mvc.HttpGet]
        public List<Book> GetOne( ) //必须以Get开头
        {
            using ( MyDB db = new MyDB( ) )
            {
                return db.Books.ToList( );
            }
        }

       

        [System.Web.Mvc.HttpPost]
        public void Post( Book book )
        {
            using ( MyDB db = new MyDB() )
            {
                db.Books.Add( book );
                db.SaveChanges( );
            }
        }

        [System.Web.Mvc.HttpPut]
        public void Put( Book book)
        {
            using ( MyDB db = new MyDB() )
            {
                var bk = db.Books.FirstOrDefault( b => b.bid == book.bid );
                bk.bname = book.bname;
                bk.bcount = book.bcount;
                db.SaveChanges( );
            }
        }
                
        [System.Web.Mvc.HttpDelete]
        public void Delete( int id )
        {
            using ( MyDB db = new MyDB() )
            {
                var bk = db.Books.FirstOrDefault( b => b.bid == id );
                db.Books.Remove( bk );
                db.SaveChanges( );                
            }
        }
    }
}
View Code

3、进行调用

private string apiUrl = WebConfigurationManager.AppSettings[ "apiUrl" ].ToString( ); //接口地址放到webconfig配置<appSettings>中里

//查询
public ActionResult Index( )
{
    HttpClient client = new HttpClient( );
    client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue( "application/json" ) );

    //执行Get操作
    HttpResponseMessage response = client.GetAsync( apiUrl ).Result;
    var list = response.Content.ReadAsAsync<List<Book>>( ).Result;
    
    return View(list);
}
//添加
[HttpPost]
public ActionResult AddBook(Book book )
{
    HttpClient client = new HttpClient( );
    client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue( "application/json" ) );
    var  response = client.PostAsJsonAsync( apiUrl , book ).Result;

    return RedirectToAction( "Index" );
}
//删除
public ActionResult DeleteBook( int id )
{
    HttpClient client = new HttpClient( );
    client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue( "application/json" ) );
    
    var response = client.DeleteAsync( apiUrl+id  ).Result;

    return RedirectToAction( "Index" );
}
//修改
[HttpPost]
public ActionResult UpdateBook( Book book )
{
    HttpClient client = new HttpClient( );
    client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue( "application/json" ) );
    var response = client.PutAsJsonAsync( apiUrl , book ).Result;
    return RedirectToAction( "Index" );           
}
View Code
作者:chenze
出处:https://www.cnblogs.com/chenze-Index/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。
原文地址:https://www.cnblogs.com/chenze-Index/p/14421123.html