前端/终端和后端都要检验输入的合法性,开发工作量*2,是否有更简单的处理方法?

2016-09-20 00:28:25 +08:00
 alexapollo

前端要在输入错误时做实时提示(可能得有本地逻辑),后端要保证数据合法
需求可能不同,但活确实是差不多的
有没有比较好的方法来做这个事?

9063 次点击
所在节点    程序员
50 条回复
Karblue
2016-09-20 10:08:44 +08:00
又想用户体验好。又想省事。让我和为难啊(:doge
zikkeung
2016-09-20 10:13:18 +08:00
typescript 可破
guyskk
2016-09-20 10:28:44 +08:00
校验规则理论上是可以前后端通用的,但 JS 版还没实现。根据后端 API 自动生成 JS 代码,发出请求之前自动校验数据,不通过就直接生成一个 400 响应。
https://github.com/guyskk/validater
有打算实现 JS 版的联系我吧,有问题也可以提 issue 。
baby4free
2016-09-20 10:32:11 +08:00
理论上是可以后端校验就行了 跟前端约定好错误码及错误消息体 前端可以根据返回的错误做对应的展示
不过为了用户体验 前端还是做一下比较好
BruceLi
2016-09-20 10:34:55 +08:00
都要验证,不过前端是为了提升用户体验,后端是为了业务逻辑的完整和数据安全,侧重点不同,验证的方法也不完全一样,如果前后端可以分享代码,把验证的逻辑单独变成一个库应该能节省一些人力和时间。
tobeyouth
2016-09-20 13:35:45 +08:00
可以把校验写成 schema,前后端引用同一份 schema 文件,然后各自进行校验

http://json-schema.org/
wizardforcel
2016-09-20 13:38:56 +08:00
找不同的人做,让人手 *2 。
sampeng
2016-09-20 17:58:26 +08:00
这本来就是一个体力活。。。
tanszhe
2016-09-20 18:06:22 +08:00
一个小插件 http://www.yxsss.com/g/ 在表单原生加入 req exp ts 这 3 个属性就好了
req="true"
exp ="正则表达式"
ts ="文案"
vghdjgh
2016-09-20 18:16:56 +08:00
楼上说的 json schema 是一个方式
不过只能验证是不是合法,前端体验不一定满足需求,所以常用于后台系统。
wxhm1120
2016-09-20 18:41:48 +08:00
再招个人-。-
Nitroethane
2016-09-20 19:20:24 +08:00
话说这种事不是应该安全部门的人负责么 0.0
ibufu
2016-09-20 19:46:16 +08:00
前端别做了吧,反正后端会抛个错误过来
oyjc
2016-09-20 19:46:40 +08:00
服务端: C# (.net
浏览器: C# 使用 Bridge.net 编译到 Javascript

** 在不久的未来:
服务端: C#
浏览器: C# 编译到 Webassembly ,直接操作浏览器 DOM 等 Javascript 能访问到的 API.
chemzqm
2016-09-20 21:28:51 +08:00
godmin railsadmin 只要在 model 层加上验证就可以了,谁用谁知道😀
alexapollo
2016-09-20 21:49:06 +08:00
@seki 什么框架和模板能比较好解决这个问题呢
@sylecn 可行,但 JS 感觉还是略 evil ,我倒是愿意用 scala 做前后端统一的语言 LOL
@think2011 有理,但感觉写起来会不会比纯前端逻辑复杂得多?毕竟约束规则没法很简单的描述,除非校验的地方很通用,一开始都想得清楚才行
@ersic 但始终都增加了 100%工作量
@7sDream 写的真多啊,不错的活,不过 django-angular 好使吗。。绑定到某个前端框架特别费劲。。
7sDream
2016-09-20 21:58:48 +08:00
@alexapollo 我自己并没有用过 不过 Google Group 上的人回复我说这个写的不错。有个 form validation 的 Demo : http://django-angular.awesto.com/form_validation/
WalkingEraser
2016-09-20 22:46:51 +08:00
自己写个 parser 处理,/滑稽
FrankFang128
2016-09-20 22:49:42 +08:00
你们搞前后分离的,终于发现这个问题了?
guyskk
2016-09-21 00:08:32 +08:00
@FrankFang128
没分离就不用校验吗,校验都放在服务端了而已,
分离后也可以只服务端校验。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/307396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX