• Web API 2的简单使用


    WebAPI project:

     

     UsersViewModel.cs

    public class UsersViewModel
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string PWD { get; set; }
    }

    UsersController.cs

    public class UsersController : ApiController
    {
       // api/users
    public IHttpActionResult GetAllUsers() { IList<UsersViewModel> users = null; using (var ctx = new masterEntities()) { users = ctx.UsersTables.Select(s => new UsersViewModel() { Id = s.Id, Name = s.Name, PWD = s.PWD }).ToList<UsersViewModel>(); } if (!users.Any()) { return NotFound(); } return Ok(users); } // api/users?id=1 public IHttpActionResult GetUserById(int id) { IList<UsersViewModel> users = null; using (var ctx = new masterEntities()) { users = ctx.UsersTables.Where(i => i.Id == id).Select(s => new UsersViewModel() { Id = s.Id, Name = s.Name, PWD = s.PWD }).ToList<UsersViewModel>(); } if (!users.Any()) { return NotFound(); } return Ok(users); } public IHttpActionResult GetUserByName(string name) { IList<UsersViewModel> users = null; using (var ctx = new masterEntities()) { users = ctx.UsersTables.Where(i => i.Name == name).Select(s => new UsersViewModel() { Id = s.Id, Name = s.Name, PWD = s.PWD }).ToList<UsersViewModel>(); } if (!users.Any()) { return NotFound(); } return Ok(users); } public IHttpActionResult GetUserByPWD(string pwd) { IList<UsersViewModel> users = null; using (var ctx = new masterEntities()) { users = ctx.UsersTables.Where(i => i.PWD == pwd).Select(s => new UsersViewModel() { Id = s.Id, Name = s.Name, PWD = s.PWD }).ToList<UsersViewModel>(); } if (!users.Any()) { return NotFound(); } return Ok(users); } public IHttpActionResult PostNewUser(UsersViewModel user) { if (!ModelState.IsValid) return BadRequest("Invalid data."); using (var ctx = new masterEntities()) { ctx.UsersTables.Add(new UsersTable() { Id = user.Id, Name = user.Name, PWD = user.PWD }); ctx.SaveChanges(); } return Ok(); } public IHttpActionResult Put(UsersViewModel user) { if (!ModelState.IsValid) return BadRequest("Not a valid model."); using(var ctx = new masterEntities()) { var existuser = ctx.UsersTables.Where(u => u.Id == user.Id) .FirstOrDefault<UsersTable>(); if(existuser != null) { existuser.Name = "NewName"; ctx.SaveChanges(); } else { return NotFound(); } } return Ok(); } public IHttpActionResult Delete(int id) { if (!ModelState.IsValid) return BadRequest("Not a valid model."); if (id <= 0) return BadRequest("Invalid id."); using(var ctx = new masterEntities()) { var usertodelete = ctx.UsersTables.Where(u => u.Id == id) .FirstOrDefault(); if(usertodelete != null) { ctx.Entry(usertodelete).State = System.Data.Entity.EntityState.Deleted; ctx.SaveChanges(); } else { return NotFound(); } } return Ok(); } }

    在另一个项目中调用API,创建相应的Service类

    UserService.cs

    class UserService
    {
        string url = @"https://localhost:44378";
    
        static UserService instance;
        public static UserService Instance
        {
            get { return instance ?? (instance = new UserService()); }
        }
    
        public IEnumerable<User> GetAllUsers()
        {
            IEnumerable<User> users = null;
    
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("https://localhost:44357/api/");
                var responseTask = client.GetAsync("users");
                try
                {
                    responseTask.Wait();
                }
                catch
                {
                    MessageBox.Show("connection failed");
                    return Enumerable.Empty<User>();
                }
    
                var result = responseTask.Result;
                if (result.IsSuccessStatusCode)
                {
                    var readTask = result.Content.ReadAsStringAsync();
                    readTask.Wait();
    
                    users = JsonConvert.DeserializeObject<List<User>>(readTask.Result);
                }
                else
                {
                    users = Enumerable.Empty<User>();
                }
            }
            return users;
        }
    
        public void PostNewUsers(User user)
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("https://localhost:44357/api/");
    
                string json = JsonConvert.SerializeObject(user);
                StringContent httpContent = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
                var postTask = client.PostAsync("users", httpContent);
                try
                {
                    postTask.Wait();
                }
                catch
                {
                    MessageBox.Show("connection failed");
                }
    
                var result = postTask.Result;
                if (result.IsSuccessStatusCode)
                {
                    MessageBox.Show("User added");
                }
            }
        }
    
        public void UpdateUser(User user)
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("https://localhost:44357/api/");
    
                string json = JsonConvert.SerializeObject(user);
                StringContent httpContent = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
                var putTask = client.PutAsync($"users?id={user.Id}", httpContent);
    
                try
                {
                    putTask.Wait();
                }
                catch
                {
                    MessageBox.Show("connection failed");
                }
    
                var result = putTask.Result;
                if (result.IsSuccessStatusCode)
                {
                    MessageBox.Show("User updated");
                }
            }
        }
    
        public void DeleteUser(User user)
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("https://localhost:44357/api/");
    
                var deleteTask = client.DeleteAsync($"users?id={user.Id}");
                try
                {
                    deleteTask.Wait();
                }
                catch
                {
                    MessageBox.Show("connection failed");
                }
    
                var result = deleteTask.Result;
                if (result.IsSuccessStatusCode)
                {
                }
            }
        }
    }

    通过Instance调用

    void GetUsers()
    {
        Users.Clear();
        UserService.Instance.GetAllUsers().ToList().ForEach(u => Users.Add(u));
    }
    
    void AddNewUser()
    {
        User newuser = new User { Id = 999, Name = "King", PWD = "@1" };
        UserService.Instance.PostNewUsers(newuser);
    }
    
    void UpdateUser()
    {
        User newuser = new User { Id = 999, Name = "Test", PWD = "123" };
        UserService.Instance.UpdateUser(newuser);
    }
    
    void DeleteUser()
    {
        UserService.Instance.DeleteUser(SelectedUser);
        GetUsers();
    }

     参考资料:ASP.NET Web API Tutorials (tutorialsteacher.com)

    把圈子变小,把语言变干净,把成绩往上提,把故事往心里收,现在想要的以后你都会有。
  • 相关阅读:
    C语言数据类型大学霸IT达人
    无线攻击工具MDK3常用命令大学霸IT达人
    WPS漏洞利用工具Bully常见命令集合
    无线密码离线破解工具Pyrit常用命令集合大学霸IT达人
    Wifite工具常用命令集合大学霸IT达人
    Linux防火墙命令大全
    详解nginx的rewrite应用,Nginx高级之Rewrite规则
    Nginx常用屏蔽规则,让你的网站更安全
    Nginx与安全有关的几个配置
    systemd 和 systemctl 使用深入理解
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/15606204.html
Copyright © 2020-2023  润新知