前后端沟通 naming conversion 转换需要知道的事
c# 是 pascal case, js 是 camel case 所以在做 web api 和 odata 的时候经常需要转换.
早年 web api 是依赖 Newtonsoft json (JSON.NET) 的, 所以我们常看见
[JsonProperty(propertyName: "name_cn")]
public string Name { get; set; } = "";
或者
[DataMember(Name = "name_cn")]
public string Name { get; set; } = "";
2 个都可以用, data member 是微软自己的, 好像是 wcf 带下来的. JsonProperty 是 newton 的.
而 newton 也会去读 data member 所以就通用了.
后来微软不依赖 newton 了, 改成了 System.Text.Json
就用了后来的
[JsonPropertyName("name_cn")]
public string Name { get; set; } = "";
所以现在的话,应该是用 JsonPropertyName 就对了
一般的 pascal case to camel case 什么都不需要设置, 默认就可以了
frombody, fromform 都是 ok 的.
https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-customize-properties
那么 odata 从来就不是用 newton 的, 所以不支持 JsonProperty
现在呢, 它视乎也没有要支持 System.Text.Json, 所以也是不可以用 JsonPropertyName
有个 feature request : https://github.com/OData/WebApi/issues/2174
那么, odata 可以 2 种做法.
第一种就是用 DataMember, 这个是微软的嘛, 而已 odata 和 wcf 靠很近.
https://docs.microsoft.com/en-us/odata/webapi/convention-model-builder
注 : 要写全套哦, DataContract, DataMember, Key 都要
[DataContract]
public class Product
{
[DataMember]
[Key]
public int Id { get; set; }
[DataMember(Name = "name_cn")]
public string Name { get; set; } = "";
[DataMember]
public ProductStatus Status { get; set; }
}
之前我也遇过一个 enum to string 的问题.
https://github.com/OData/WebApi/issues/2264
EnumMember 和 DataContract 也是一类的, 那时候也是一定要写 DataContract 才有用.
第二种就是在 builder 的时候直接改.
https://stackoverflow.com/questions/42016069/how-to-query-odata-while-using-alternate-property-names
如果你 2 个都写的话, builder 会盖过 data member 哦
一般的 pascal case to camel case
https://stackoverflow.com/questions/24909532/odata-json-camelcase
builder.EnableLowerCamelCase()
前后端沟通 naming conversion 转换需要知道的事的更多相关文章
- 十件你需要知道的事,关于openstack-trove(翻译)
开源数据库即服务OpenStack Trove应该知道的10件事情 作者:Ken Rugg,Tesora首席执行官 Ken Rugg是Tesora的创始人,CEO和董事会成员. Ken的大部分职业都是 ...
- C# 范型约束 new() 你必须要知道的事
C# 范型约束 new() 你必须要知道的事 注意:本文不会讲范型如何使用,关于范型的概念和范型约束的使用请移步谷歌. 本文要讲的是关于范型约束无参构造函数 new 的一些底层细节和注意事项.写这篇文 ...
- 网站开发进阶(三十八)Web前端开发规范文档你需要知道的事
Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...
- Web前端开发规范文档你需要知道的事
Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...
- 关于Unicode,字符集,字符编码,每个程序员都应该知道的事
关于Unicode,字符集,字符编码,每个程序员都应该知道的事 作者:Jack47 李笑来的文章如何判断一个人是否聪明?中提到: 必要.清晰.且准确的概念,是一切思考的基石.所谓思考,很大程度上,就是 ...
- IL命令初学者要知道的事
在一个中间语言程序中,如果某一行以“.”开始,代表这是一个传输给汇编工具的指令:而不是以“.”开始的行是中间语言的代码.上图中.method是方法定义指令,定义了Main方法,参数在“()”中,IL代 ...
- 苹果强制使用HTTPS传输了怎么办?——关于HTTPS,APP开发者必须知道的事
WeTest 导读 2017年1月1日起,苹果公司将强制使用HTTPS协议传输.本文通过对HTTPS基础原理和通信过程内容的讲解,介绍APP开发者在这个背景下的应对办法. 几周前,我们在<htt ...
- 学javascript必须要知道的事
第一:变量声明 在使用javascript时使用变量时首先做的是声明变量,变量声明的关键字是var. 例子: var i; var sum; 也可以多个变量声明: var i,sum; 还可以在声明时 ...
- 学习IOS需要知道的事
什么是iOS iOS是一款由苹果公司开发的操作系统(OS是Operating System的简称),就像平时在电脑上用的Windows XP.Windows 7,都是操作系统 那什么是操作系统呢?操作 ...
- 关于感受野 (Receptive field) 你该知道的事
Receptive field 可中译为“感受野”,是卷积神经网络中非常重要的概念之一. 我个人最早看到这个词的描述是在 2012 年 Krizhevsky 的 paper 中就有提到过,当时是各种不 ...
随机推荐
- 机器学习策略篇:详解处理数据不匹配问题(Addressing data mismatch)
处理数据不匹配问题 如果您的训练集来自和开发测试集不同的分布,如果错误分析显示有一个数据不匹配的问题该怎么办?这个问题没有完全系统的解决方案,但可以看看一些可以尝试的事情.如果发现有严重的数据不匹配问 ...
- [oeasy]python0019_ 打包和解包_struct_pack_unpack
打包和解包 回忆上次内容 ASCII 由这样几类字符构成 英文大写字符 英文小写字符 数字 符号 电报时代对于英文.数字的编码 使用的是摩斯电码 编辑 这摩斯电码是3进制的编码方式 长短空 怎 ...
- 记录一次在欧拉(openEuler22.03LTS-SP4)系统下安装(踩坑)Freeswitch1.10.11的全过程
目录 前言 安装环境 1. 下载Freeswitch 1.1 git clone 下载freeswitch库 1.2 官网下载 2. 开始安装前的工作 2.1 安装编译时需要的环境[先安装这个!] 2 ...
- 个人使用 sudo 方法
sudo 作用:允许 系统管理员 授予某些用户或用户组以 其他用户身份 运行某些或所有命令的权限 su 用于变更为其他使用者的身份的命令,一般需要键入该使用者的密码 sudo 则是对 su 使用的简化 ...
- 2023/4/16 SCRUM个人博客
1.我昨天的任务 大体学习并了解初始化pyqt5的一些可视化问题 2.遇到了什么困难 对于py的字典使用 3.我今天的任务 学习了easydict库的基本操作
- app接口测试
app接口测试 一,app请求服务器端接口和web页面请求服务器端接口有什么区别? 1,大多数项目如果有app的话,而且web端和app端的页面显示结构已经功能都相似,调用的后台接口也是一样的. 2, ...
- 第一讲:日志系统:一条sql更新语句是如何执行的?
目录 第一讲:日志系统:一条sql更新语句是如何执行的? 回顾 抛出问题: 提出思路: 重要的日志模块:redo log 重要的日志模块:binlog 为什么会有两份日志呢? 这两种日志有以下三点不同 ...
- 【微信小程序】 列表查询功能
对应本地生活案例: https://www.bilibili.com/video/BV1834y1676P?p=52 HTML代码部分: 就是普通的wx-for指令遍历 <!--pages/cl ...
- 失温急救处理方法——1.快速复温;2.心肺复苏;3.口服或静脉注射生理盐水(40 ~ 42 ℃ ,小剂量250 mL);4.口服或静脉注射抗血栓药物,如布洛芬
相关: https://haokan.baidu.com/v?pd=wisenatural&vid=14530104659934311010 参考: https://m.bjnews.com. ...
- js 实现俄罗斯方块(二)
上篇已经看过整个游戏的样子了,本节我们来分析下整个游戏 和实现的逻辑! 首先看下游戏规则: 首先确定这几个形状原型 这7个基础图形都是由4个格子组成. 规则: 1.当所有色块填满一整行以后自动清理 ...