您的位置:首页 > 其它

WebApi2 知识点总结

2016-05-23 15:56 302 查看
1、建议使用异步接口async Task<>

public async Task<IHttpActionResult> Get()


如果返回的是IEnumerable请使用:

return Ok<IEnumerable<ListSitesDetails>>(sites);


如果返回是实体请使用:

return Ok(entity);


此返回常常在获取一个类型值时使用:

public async Task<IHttpActionResult> 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和位置


2、在WebApi里怎样自定义方法?怎样调用方法?

public async Task<IHttpActionResult> 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<IHttpActionResult> GetTest(string account) { string restmsg = await UserLogin("十五里元中学", account, "0000"); return Ok(restmsg); }


上面要调用则使用:/api/users/test/james方式

-------------------------------------------------------------------------------------

再来看Post示例

[HttpPost]
public async Task<IHttpActionResult> PostLogin(string school)


这个表示是Post访问调用,它的调用为:/api/Users/login?school=十五里元中学

如果多个参数,建议直接使用类型传值,不要使用string。比如:

[HttpPost]
public async Task<IHttpActionResult> 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');
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: