zoukankan      html  css  js  c++  java
  • 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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    BindingException: Parameter 'approval_state' not found. Available parameters are [arg1, arg0, param1, param2]]
    vue.js学习笔记(一)——vue-cli项目的目录结构
    memcpy函数
    与、或、异或运算
    C++中的dynamic_cast和dynamic_pointer_cast
    django中orm之什么是正向查询什么是反向查询
    jquery笔记
    jquery
    前端操作数组
    Auto Layout Guide----(三)-----Anatomy of a Constraint
  • 原文地址:https://www.cnblogs.com/chenze-Index/p/14421123.html
Copyright © 2011-2022 走看看