WebApi学习总结
webapi是个前端提供数据的一个框架,它跟MVC的区别是webapi只负责数据的处理返回并没有视图层。
webapi使用的是Restfil格式的数据方式,分为以下方式:
Post
(新增) -Get
(查询)Put
(修改) -Delete
(删除)
部分情况也可以将Put 与Delete 都放在post中请求。
在Visual Studio 创建一个webapi项目
此时直接运行项目可以看到系统默认创建的一个页面,在这个页面可以看到当前项目已有的AP列表
点击API按钮即可查看到项目默认创建的基础API,包含了基础的Get、Put、Post、Delete方法。
请求API
要想查看项目默认创建的API,只需在项目资源管理器中打开 Controllers 》 ValuesController 这个webapi的控制器
上面是这个控制器的方法,已经包含了基本的请求,在每个方法的上面还有一个注释,这个注释就是这个方法的api请求地址,第一个Get的方法注释为 api/values
那么要请求这个方法只需在项目地址后加上这个就可以了http://localhost:65203/api/values
,webapi会根据不同的请求以及参数来判断具体请求的方法
请求后成功的获取到了Get方法返回的数组,如果出现拒绝访问可以将控制器里的[Authorize]
注释掉
在Get方法下面还有一个带有参数的Get方法,返回的值是一个字符串“value”
// GET api/values/5
public string Get(int id)
{
return "value";
}
如果想要请求这个方法,只需要在请求时带入一个int参数,webapi会自动的去执行对应的方法
获取JSON数据并解决webapi跨域问题
在浏览器中直接输入请求链接返回的是XML数据格式,但实际使用更多的json数据格式,如果想要获取json格式的数据在webapi中并不需要任何配置,但你使用jQuery请求时webapi会根据请求类型自动的返回json数据。
通过ajax在其它地方对API进行请求
$.ajax({
url:"http://localhost:65203/api/values",
type:"get",
success:function (data) {
console.log(data);
}
})
请求后出现了跨域异常
要解决跨域问题可以引入一个NuGet程序包
在WebAPI项目中使用NuGet搜索“microsoft.apsnet.webapi.cors”并安装
安装完成之后只需在项目APP_Start >>> WebApiConfig中加入一句代码代码就可以了
public static void Register(HttpConfiguration config)
{
// Web API 配置和服务
// 将 Web API 配置为仅使用不记名令牌身份验证。
config.EnableCors(new EnableCorsAttribute("*","*","*"));
}
设置好之后再次请求,即可完成webapi跨域请求并返回json数据