rest - 是否有在 RESTful API 中定义“模板”资源的模式?
问题描述
假设我正在构建一个 Web 应用程序(使用 React,以防万一),有人可以在其中创建一个新的 Widget。一些 Widget 属性在 API 的数据模型中定义了默认值。这些默认值需要显示在 UI 表单中以创建新的 Widget。
我想避免在应用程序与 API 数据模型中重复这些默认值。这是 API 中定义的示例数据模型:
Widget
_id
name
messageTextColor (default #999999)
bodyBackgroundColor (default #FFFFFF)
someBooleanValue (default true)
someOtherBooleanValue (default false)
... and so on
有十几个设置,许多都有默认值。
我可以在我的 UI 应用中复制这些默认值:
class EditWidgetPage extends React.Component {
constructor(props) {
super(props);
this.state = {
name: '',
messageTextColor: '#999999',
bodyBackgroundColor: '#FFFFFF',
someBooleanValue: true,
someOtherBooleanValue: false,
... etc
};
}
}
我还可以在我的 API 中定义一个资源GET /widgets/new
,它返回一个“模板”小部件:
{
name: '',
messageTextColor: '#999999',
bodyBackgroundColor: '#FFFFFF',
someBooleanValue: true,
someOtherBooleanValue: false,
... etc
}
我想知道是否有人可以向我指出与常见模式相关的在线信息(例如,博客文章),通过这种模式可以在 RESTful API 中访问“模板”资源——或者甚至是此处未列出的替代方法。
解决方案
我担心这将被视为“基于意见”,或者至少是一个有点不清楚的答案。无论如何,您可能会在 HATEOAS 中找到答案。许多格式都有“形式”或“动作”的概念,“发现创建形式”的想法是一种非常常见的模式。
无论如何,我也不明白你怎么不能:
http://api.example/foo/template
在with处获取“模板”资源GET
- 编辑属性,以及
- 在新端点再次提交结果以使用
PUT
和创建资源POST
。
推荐阅读
- java - 如何使用由 Spring 管理的具有多个安全配置的单独自定义过滤器?
- asp.net - .Net Console.WriteLine 和 System.Diagnostics.Debug.WriteLine(); 不工作
- javascript - 第一个小部件后 GWT VerticalPanel 未与顶部对齐
- javascript - 从“当前时间”开始计算具有最近几天、几周和几个月的时间戳的对象(在数组中)
- javascript - 如何从 Angular Component 方法触发 SVG 动画?
- python - 如何在不更改日期的情况下在 Seaborn 热图中编辑日期时间格式?
- python - 与 pyinstaller 捆绑 - ModuleNotFoundError: No module named 'bs4
- google-books - Google Books API 查找确切作者
- sql - 如何在 postgres 中加入两个大表并更快地获取数据
- swagger - 将基于声明的授权策略应用于 .Net Core 3.1 中的 Swagger UI