WebApi2|WebApi2 知识点总结

1、建议使用异步接口async Task<>

public async Task Get()

如果返回的是IEnumerable请使用:
return Ok>(sites);

如果返回是实体请使用:
return Ok(entity);

此返回常常在获取一个类型值时使用:
public async Task Get(int id)

如果仅仅返回一个成功结果200就是直接Ok(); 就行了
如果想返回一个实体类又想返回一个地址路由请使用:
return CreatedAtRoute("DefaultApi", new {controller="Home",id=sites.Id }, sites);
转到api/Home/id上,并返回刚刚添加的sites新内容

return Created("http://www.*.com",sites);
返回sites和位置

【WebApi2|WebApi2 知识点总结】2、在WebApi里怎样自定义方法?怎样调用方法?
public async Task GetTest(string account) { string restmsg = await UserLogin("十五里元中学", account, "0000"); return Ok(restmsg); }


如果是get访问则所有方法前面都要加Get; Post则要加Post;可是调用的时候要去掉Get/Post
比如上面的代码要调用它要这样:/api/users/test?account=james
当然你也可以添加路由改变访问方式:
[Route("api/users/gettest/{account}")] public async Task GetTest(string account) { string restmsg = await UserLogin("十五里元中学", account, "0000"); return Ok(restmsg); }


上面要调用则使用:/api/users/test/james方式
-------------------------------------------------------------------------------------
再来看Post示例
[HttpPost] public async Task PostLogin(string school)


这个表示是Post访问调用,它的调用为:/api/Users/login?school=十五里元中学
如果多个参数,建议直接使用类型传值,不要使用string。比如:
[HttpPost] public async Task PostLogin(Item item)


public class Item { public string school{get; set; } public string account{get; set; } public string password{get; set; } }


调用:
var item = {'school':'十五里元中学','account':'james','password':'0000'}; return $http({ url: 'api/user/login', method: 'POST', type: 'application/json', data: item }).then(function (user) { // check the user is null or not and take action }).error(function (error) { alert('invalid'); });


    推荐阅读