当前位置: 移动技术网 > IT编程>开发语言>.net > 武装你的WEBAPI-OData入门

武装你的WEBAPI-OData入门

2020年05月12日  | 移动技术网IT编程  | 我要评论

乌棱思谋,直饮水网,麦克风门

本文属于odata系列

目录(可能会有后续修改)

  • 武装你的webapi-odata入门
  • 武装你的webapi-odata便捷查询
  • 武装你的webapi-odata分页查询
  • 武装你的webapi-odata资源更新
  • 武装你的webapi-odata之edm
  • 武装你的webapi-odata格式转换
  • 武装你的webapi-odata使用endpoint

edm ededm edm ededm!

前阵子刷抖音,隔几个就是这个,被洗脑了,本着闲着也是闲着的心态,我决定一探究竟,唱的到底是个啥。

探索

网上找了一下,发现这个:edm is short for entity data model.

看到这个我就惊了,这不就是odata的数据模型嘛,我去,他们还挺有极客精神。想到前阵子也用odata来着,就简单写写相关的内容吧。

odata简介

什么是odata?

odata(open data protocol)是一个开源的开放协议(oasis标准)的技术,开发者可以通过它向用户提供可查询的api。()

很笼统,我们直接看这个玩意可以干什么:

  • 客户端可以通过请求自行设计查询,不需要和后端沟通具体查询参数、接口等信息,节省了大量的沟通成本和时间成本。
  • 数据的筛选是在服务端完成的,不需要客户端一次性请求所有数据并在前端筛选,大大提升了效率。
  • 支持数据的定制,可以选择数据的多个维度。
  • 结合ef等orm技术,数据可以直接通过数据库查询获得,效率更高。
  • 轻松实现分页查询
  • 符合restful

非常有吸引力,如果后端写好接口,前端自己去选数据了,想干啥干啥,别找我要传参查询,世界多美好。

这个东西见的不多,但是确实在很多地方用到,例如sharepoint、microsoft graph等等,没错你猜对了,这东西就是微软和sap出的,2007年就有了。sap也用了很多这个,很多资料都是他们写的。和这个东西类似的有一个graphql,没研究过。

  • 官方的口号是odata - the best way to rest

方法

直接看看应该怎么用吧,首先你需要有一个现成的api。

安装nuget包

install-package microsoft.aspnetcore.odata

设置startup.cs

需要在configureservices里面增加

services.addodata();

在configure里面增加

app.usemvc(routebuilder => {

     routebuilder.enabledependencyinjection();
	 //启用expand/select/orderby/filter语法支持
     routebuilder.expand().select().orderby().filter();

});

然后在api的方法上面添加[enablequery]这个内容就行了。

[httpget]
[enablequery]
public ienumerable<student> getstudents()
{
    return this.context.students;
}

简单使用

部署好了之后,就可以使用get请求来请求数据了。

select查询

api/students?$select=name

上面的请求将只返回学生的姓名,别的就不返回了,这样能够减少大量的数据。

filter过滤

api/students?$filter=name eq 'todd'

上面的查询返回student用户名为todd的记录。

api/students?filter=score gt 100

上面的查询返回score大于100的学生的记录。

orderby排序

api/students?$orderby=score desc

上面的查询返回按照score进行降序排序的记录。

总结

odata使得客户端的查询变得极其方便,本文只是开篇,还有很多更方便的特性,以后再讲。

官方示例项目:https://github.com/hassanhabib/odatademo

参考资料

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网