在.NET Core 刚刚1.0 RC的时候,我就给OData团队创建过Issue让他们支持ASP.NET Core,然而没有任何有意义的答复。

Roadmap for ASP.NET Core 1.0 RC2?

接着,在.NET Core 1.0刚刚发布的时候,又给他们创建了另外一个Issue,虽然被他们列为P1,但是已经没有下文:

Roadmap for OData WebAPI run on ASP.NET Core 1.0

然后在.NET Core 2.0 Preview版本发布的时候,我继续给OData 团队提Issue:

[vNext] Even ASP.NET Core 2 Preview 1 announced, OData WebAPI vNext still no updates

最终,在OData 7.0的时候,OData发布了基于ASP.NET Core的支持。

经过这么长时间的测试和迭代,我想,是时候创建一个基于OData的Web API。

不幸的是,OData再次走在ASP.NET Core 后面: https://github.com/OData/WebApi/issues/1748,所以这个例子只能使用ASP.NET Core 2.2。 

所幸的是,自从7.3.0-beta开始支持.NETCore 3.0(更新日期:2019.12.11),后续的博客中使用了该Beta版本。

本篇为Part I: Business Scenario

Knowledge Builder是个用来创建、维护、浏览知识点的Web App,Knowledge Builder API是服务于其需求的API。

简单来说,Knowlege Item是个复杂文本,外加一些额外的属性。

就常见的语数英而言,Knowledge本身要支持各种特殊符号,而且需要支付各种数学公式、数学图形等。

这是一个复杂度适中的API, 主要关于rich text的存储,图形文件上传下载等。

数据库表定义如下(基于T-SQL):

CREATE TABLE [dbo].[Knowledge] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[ContentType] SMALLINT NULL,
[Title] NVARCHAR (50) NOT NULL,
[Content] NVARCHAR (MAX) NOT NULL,
[Tags] NCHAR (100) NULL,
[CreatedAt] DATETIME DEFAULT (getdate()) NULL,
[ModifiedAt] DATETIME DEFAULT (getdate()) NULL,
PRIMARY KEY CLUSTERED ([ID] ASC)
);

创建基于OData的Web API - Knowledge Builder API, Part I:Business Scenario的更多相关文章

  1. 创建基于OData的Web API - Knowledge Builder API, Part IV: Write Controller

    基于上一篇<创建基于OData的Web API - Knowledge Builder API, Part III:Write Model and Controller>,新创建的ODat ...

  2. 创建基于OData的Web API - Knowledge Builder API, Part III:Write Model

    在前两篇文章<Part I: Business Scenario> 和<Part II: Project Setup>后,可以开始真正Model的创建. 步骤如下: 1. 创建 ...

  3. 创建基于OData的Web API - Knowledge Builder API, Part II:Project Setup

    本篇为Part II:Project Setup 查看第一篇<Part I:  Business Scenario> 第一步,准备步骤. 准备步骤一,下载.NET Core 2.2 SDK ...

  4. 使用 node-odata 轻松创建基于 OData 协议的 RESTful API

    前言 OData, 相信身为.NET程序员应该不为陌生, 对于他的实现, 之前也有童鞋进行过介绍(见:这里1,这里2). 微软的WCF Data Service即采用的该协议来进行通信, ASP.NE ...

  5. 基于SVG的web页面图形绘制API介绍

    转自:http://blog.csdn.net/jia20003/article/details/9185449 一:什么是SVG SVG是1999由W3C发布的2D图形描述语言,纯基于XML格式的标 ...

  6. Java Web学习系列——创建基于Maven的Web项目

    创建Maven Web项目 在MyEclipse for Spring中新建Maven项目 选择项目类型,在Artifact Id中选择maven-archetype-webapp 输入Group I ...

  7. 可能是最简单的方式:利用Eclipse创建基于Maven的Web项目

    1. 新建一个maven项目 2.在弹出框中选择创建一个简单项目 3. 然后输入参数,需要注意的是,在packagin中,选择war,web项目应该选择war 4. 点击finish后,基本项目结构就 ...

  8. idea创建基于maven的web项目

    1.点击create new project,选择maven,点击next 2.输入项目信息,点击finish 3.进入项目后,点击菜单File->Project Structure开始配置项目 ...

  9. maven-bundle-plugin插件, 用maven构建基于osgi的web应用

    maven-bundle-plugin 2.4.0以下版本导出META-INF中的内容到MANIFEST.MF中 今天终于把maven-bundle-plugin不能导出META-INF中的内容到Ex ...

随机推荐

  1. 网络编程之winInet

    InternetGetConnectedState() 简介: 功能:检索本地系统的网络连接状态. 函数原型:BOOLAPI InternetGetConnectedState(            ...

  2. RSA-演变过程、原理、特点(加解密及签名)及公钥私钥的生成

    本篇是iOS逆向开发总结的第一篇文章,是关于iOS密码学的相关技术分析和总结,希望对大家有所帮助,如果有错误地方欢迎指正. 一.前言 密码学的历史追溯到2000年前,相传古罗马凯撒大帝为了防止敌方截获 ...

  3. Redis未授权访问写Webshell和公私钥认证获取root权限

    0x01 什么是Redis未授权访问漏洞 Redis 默认情况下,会绑定在 0.0.0.0:,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服 ...

  4. 程序员成长的四个简单技巧,你 get 了吗?

    最近拜读了"阿里工程师的自我修养"手册,12 位技术专家分享生涯感悟来帮助我们这些菜鸡更好的成长,度过中年危机,我收获颇多,其中有不少的方法技巧和我正在使用的,这让我觉得我做的这些 ...

  5. [BZOJ1202] [NZOI2005]狡猾的商人

    Description 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的.账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i=1,2,3...n-1,n), .当 ...

  6. 详解立即执行函数(function(){}()),(function(){})()

    要知道这几种写法之间的区别,我们要先聊些题外话——js中函数的两种命名方式,即表达式和声明式. 函数的声明式写法为:function foo(){/*...*/},这种写法会导致函数提升,所有func ...

  7. 使用css实现导航下方线条随导航移动效果

    HTML部分 <ul> <li><a href="">第一条</a></li> <li><a href ...

  8. python学习-语言概述(一)

    1.python的特点 python是一种面向对象.解释型.弱类型的脚本语言,它也是一种功能强大而完善的通用型语言. 解释性语言的特点:速度慢:源代码加密困难:跨平台:

  9. if-elif-else分支判断语句(附加continue和break)---举例说明

    一.分支循环语句: a=input("请输入一个五位数字") if(len(a)!=5): print("输入的数字不合格"); elif(a[0::]==a[ ...

  10. Feign服务调用请求方式及参数总结

    前言 最近做微服务架构的项目,在用feign来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录.以下通过分为三种情况说 ...