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)

把圈子变小,把语言变干净,把成绩往上提,把故事往心里收,现在想要的以后你都会有。
原文地址:https://www.cnblogs.com/jizhiqiliao/p/15606204.html