首页 > 学院 > 开发设计 > 正文

WebApi增删改查Demo

2019-11-17 02:04:04
字体:
来源:转载
供稿:网友

WebApi增删改查Demo

1.新建webapi项目

2.配置WebApiConfig

public const string DEFAULT_ROUTE_NAME = "MyDefaultRoute";        public static void Register(HttpConfiguration config)        {            config.Routes.MapHttPRoute(                name: DEFAULT_ROUTE_NAME,                routeTemplate: "api/{controller}/{id}",                defaults: new { id = RouteParameter.Optional }            );            // 取消注释下面的代码行可对具有 IQueryable 或 IQueryable<T> 返回类型的操作启用查询支持。            // 若要避免处理意外查询或恶意查询,请使用 QueryableAttribute 上的验证设置来验证传入查询。            // 有关详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=279712。            //config.EnableQuerySupport();            // 若要在应用程序中禁用跟踪,请注释掉或删除以下代码行            // 有关详细信息,请参阅: http://www.asp.net/web-api            config.EnableSystemDiagnosticsTracing();        }

3.在models文件新建person模型

public class Person    {        public int Id { get; set; }        public string FirstName { get; set; }        public string LastName { get; set; }    }

4.在models文件中添加ipersonRepository

interface IPersonRepository    {        IEnumerable<Person> GetAll();        Person Get(int id);        Person Add(Person person);        void Remove(int id);        bool Update(Person person);    }

5.在models文件中添加仓库实现

public class PersonRepository : IPersonRepository    {        // We are using the list and _fakeDatabaseID to represent what would        // most likely be a database of some sort, with an auto-incrementing ID field:        private List<Person> _people = new List<Person>();        private int _fakeDatabaseID = 1;        public PersonRepository()        {            // For the moment, we will load some sample data during initialization.             this.Add(new Person { LastName = "Lennon", FirstName = "John" });            this.Add(new Person { LastName = "McCartney", FirstName = "Paul" });            this.Add(new Person { LastName = "Harrison", FirstName = "George" });            this.Add(new Person { LastName = "Starr", FirstName = "Ringo" });        }        public IEnumerable<Person> GetAll()        {            return _people;        }        public Person Get(int id)        {            return _people.Find(p => p.Id == id);        }        public Person Add(Person person)        {            if (person == null)            {                throw new ArgumentNullException("person");            }            person.Id = _fakeDatabaseID++;            _people.Add(person);            return person;        }        public void Remove(int id)        {            _people.RemoveAll(p => p.Id == id);        }        public bool Update(Person person)        {            if (person == null)            {                throw new ArgumentNullException("person");            }            int index = _people.FindIndex(p => p.Id == person.Id);            if (index == -1)            {                return false;            }            _people.RemoveAt(index);            _people.Add(person);            return true;        }    }

6.在controllers中添加apiController为PersonController

public class PersonController : ApiController    {        static readonly IPersonRepository databasePlaceholder = new PersonRepository();        public IEnumerable<Person> GetAllPeople()        {            return databasePlaceholder.GetAll();        }        public Person GetPersonByID(int id)        {            Person person = databasePlaceholder.Get(id);            if (person == null)            {                throw new HttpResponseException(HttpStatusCode.NotFound);            }            return person;        }        public HttpResponseMessage PostPerson(Person person)        {            person = databasePlaceholder.Add(person);            string apiName = WebApi.WebApiConfig.DEFAULT_ROUTE_NAME;            var response =                this.Request.CreateResponse<Person>(HttpStatusCode.Created, person);            string uri = Url.Link(apiName, new { id = person.Id });            response.Headers.Location = new Uri(uri);            return response;        }        public bool PutPerson(Person person)        {            if (!databasePlaceholder.Update(person))            {                throw new HttpResponseException(HttpStatusCode.NotFound);            }            return true;        }        public void DeletePerson(int id)        {            Person person = databasePlaceholder.Get(id);            if (person == null)            {                throw new HttpResponseException(HttpStatusCode.NotFound);            }            databasePlaceholder.Remove(id);        }    }

以上就完成了webapi的简单搭建。接下来创建客户端来访问webapi。

7.新建console项目,添加webapi Core Library。

添加引用

using System.Net.Http; using Newtonsoft.Json.Linq;

private const string url = "http://localhost:43571/";        static void Main(string[] args)        {            Console.WriteLine("Retreive All The People:");            JArray people = GetAllPerson();             foreach (var person in people)            {                Console.WriteLine(person);            }            // WRITE A SPECIFIC PERSON TO CONSOLE (JSON):            Console.WriteLine(Environment.NewLine + "Retreive a Person by ID:");            JObject singlePerson = GetPerson(2);            Console.WriteLine(singlePerson);            // ADD NEW PERSON, THEN WRITE TO CONSOLE (JSON):            Console.WriteLine(Environment.NewLine + "Add a new Person and return the new object:");            JObject newPerson = AddPerson("Atten", "John");            Console.WriteLine(newPerson);            // UPDATE AN EXISTING PERSON, THEN WRITE TO CONSOLE (JSON):            Console.WriteLine(Environment.NewLine + "Update an existing Person and return a boolean:");            // Pretend we already had a person's data:            JObject personToUpdate = GetPerson(2);            string newLastName = "Richards";            Console.WriteLine("Update Last Name of " + personToUpdate + "to " + newLastName);            // Pretend we don't already know the Id:            int id = personToUpdate.Value<int>("Id");            string FirstName = personToUpdate.Value<string>("FirstName");            string LastName = personToUpdate.Value<string>("LastName");            if (UpdatePerson(id, newLastName, FirstName))            {                Console.WriteLine(Environment.NewLine + "Updated person:");                Console.WriteLine(GetPerson(id));            }            // DELETE AN EXISTING PERSON BY ID:            Console.WriteLine(Environment.NewLine + "Delete person object:");            DeletePerson(5);            // WRITE THE UPDATED LIST TO THE CONSOLE:            {                // WRITE ALL PEOPLE TO CONSOLE                Console.WriteLine("Retreive All The People using classes:");                people = GetAllPerson();                foreach (var person in people)                {                    Console.WriteLine(person);                }            }            Console.Read();        }        /// <summary>        /// get all Person        /// </summary>        /// <returns></returns>        static JArray GetAllPerson()        {            HttpClient client = new HttpClient();            HttpResponseMessage response = client.GetAsync(url + "api/person").Result;            return response.Content.ReadAsAsync<JArray>().Result;        }        static JObject GetPerson(int id)        {            HttpClient client = new HttpClient();            HttpResponseMessage response = client.GetAsync(url + "api/person/" + id).Result;            return response.Content.ReadAsAsync<JObject>().Result;        }        static JObject AddPerson(string newLastName, string newFirstName)        {            var newPerson = new { LastName
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表