Web API tutorial

Web API

First, we can refer to this link.

Here, we make a quick tutorial. we build restful api using MVC Web API

  1. First Controller, In this Sample, we need to note these things.

1.1 Controller should inherite from ApiController.

1.2 For each Api, it is just a function. We need to specify the Route , HttpMethod, ReturnType.
Route, MSDN, we can provide url only, as it is shown below.
or along with the RouteName. For Detail About Route, we can refer Link

1.3 For the returnType of the webapi, it Can be HttpResponseMessage, or concrete Type of ViewModel. Detail explanation of HttpResponseMessage.

code Sample:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using ERPWeb.ViewModel;

namespace ERPWeb.Api.Controllers
{
    public class ProductsController : ApiController
    {
        [HttpGet]
        [Route("api/Products")]
        public HttpResponseMessage GetAll()
        {
            List<ProductViewModel> productList = new List<ProductViewModel>();
            productList.Add(new ProductViewModel() { Id = 1, Name = "Product1", Size = 50, Count = 1000 });
            productList.Add(new ProductViewModel() { Id = 2, Name = "Product2", Size = 57, Count = 1000 });
           // return Request.CreateErrorResponse(HttpStatusCode.NotFound,"not found");
            return Request.CreateResponse(HttpStatusCode.OK, productList);
        }

        [HttpGet]
        [Route("api/Products/{Id}")]
        public HttpResponseMessage Get(int Id)
        {
            ProductViewModel pvm = new ProductViewModel() { Id = 2, Name = "Product2", Size = 57, Count = 1000 };
            return Request.CreateResponse(HttpStatusCode.OK, pvm);
        }

        [HttpPatch]
        [HttpPut]
        [Route("api/Products/{Id}")]
        public HttpResponseMessage Put(int Id,[FromBody] ProductViewModel updatedProduct)
        {
            updatedProduct.Name = "OK";
            return Request.CreateResponse(HttpStatusCode.OK, updatedProduct);
        }

        [HttpPost]
        [Route("api/Products")]
        public HttpResponseMessage Post([FromBody] ProductViewModel pvm)
        {
            pvm.Id = 3;
            pvm.Name = "Ok";
            return Request.CreateResponse(HttpStatusCode.OK, pvm);
        }

        [HttpDelete]
        [Route("api/Products/{Id}")]
        public HttpResponseMessage Delete(int Id)
        {
            if(Id==1)
            {
                return Request.CreateResponse(HttpStatusCode.OK);
            }
            else
            {
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, "error");
            }
        }
    }
}
原文地址:https://www.cnblogs.com/kongshu-612/p/5949588.html