postgresql - 如何防止特定列通过 REST API 更新显式设置它们的值?

标签 postgresql rest

我有多个表,我希望用户能够通过 rest api 更新这些表,并且许多(如果不是全部)的列具有合理的默认值。

Web 应用程序本身可以设计为隐藏这些列,但我也希望允许直接访问 API,以便其他人可以按照他们认为合适的方式使用数据。

不幸的是,这意味着他们可以显式设置默认列(将时间戳列设置为 1972,或将 id 列设置为任意值)。

在后端 (Postgres 9.4) 有什么机制可以限制它?

最佳答案

您应该在 API 级别执行此操作。

如果有人发出格式错误的请求(例如,他们想要覆盖 ID 或时间戳),请使用正确的状态代码(可能是 400)进行回答,并用有意义的消息进行修改,例如“嘿您尝试更新 ,它是只读的。”

如果您真的坚持在数据库级别处理它,here他们建议:

The easiest way is to create BEFORE UPDATE trigger that will compare OLD and NEW row and RAISE EXCEPTION if the change to the row is forbidden.

关于postgresql - 如何防止特定列通过 REST API 更新显式设置它们的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31187371/

相关文章:

ruby-on-rails - 在 Rails 和 PostgreSQL 中完全忽略时区

sql - PostgreSQL 将数组转换为二维

sql - 排除具有特定值 '*' SQL SELECT 的记录

sql - 如何修复 postgres-utils eval() 错误 : missing FROM-clause entry for table "foo"?

python - 属性在对 FlaskView 的请求之间永远不会更新

postgresql - 为什么我得到 ActionView::Template::Error: undefined method `name' for nil:NilClass on Heroku 而不是本地

java - 在过滤器中设置授权 header

node.js - 从 Sabre 请求 SeatMap 信息时出现错误代码 "ERR.RAF.APPLICATION"是什么意思?

spring - 使用 Swagger/OpenAPI 文档模拟 Rest API

java - 在java Rest服务中获取json