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(); }