我正在寻找一个使用阿尔卑斯山的示例客户端实现(不是山区,而是应用程序级概要语义)。
你是!有一个吗?
我已经研究过相关的RFC草案和讨论,但仍然可以很好地理解它。
具体来说,我想知道我的客户端应该如何知道描述符描述的内容,因为我的客户机应该不了解REST原则所要求的REST的结构和语义?
作为一个人,我知道带有一个名为“用户”的id标记的描述符很可能描述如何与用户交互,但是我的客户端如何知道没有我明确地告诉他呢?
我知道我可以插入某种关键字来显示在描述符中,并告诉我的客户端匹配合适的关键字,但这似乎不是正确的方法。
我高兴地提供了一个更详细的例子,如果有人愿意读的话。
发布于 2018-03-10 12:01:35
我也是第一次探索阿尔卑斯山,我从RFC选秀中得到的理解也不是即时的。
这是一个来自RFC作者的幻灯片(166张幻灯片,所以不可能全部复制到这个答案中),我认为它能更好地理解阿尔卑斯山所扮演的角色。
作为一个人,我知道带有一个名为
descriptor的id标记的用户很可能描述如何与用户交互,但是我的客户如何知道这一点,而我没有明确地告诉他呢?
从这张幻灯片中,我推断出你的问题的答案:他没有。
在幻灯片显示中,将对ALPS示例配置文件与表单提交的等效HTML代码进行比较。浏览器知道如何将HTML呈现到屏幕上,但是只有人知道用这些输入字段发布表单意味着什么,使用提交按钮。
下面是一个示例完整的JSON表示,摘自alps.io
{
"alps" : {
"version" : "1.0",
"doc" : {
"href" : "http://example.org/samples/full/doc.html"
},
"descriptor" : [
{
"id" : "search",
"type" : "safe",
"doc" : {"value" :
"A search form with a two inputs"
},
"descriptor" : [
{
"id" : "value",
"name" : "search",
"type" : "descriptor",
"doc" : { "value" : "input for search" }
},
{ "href" : "#resultType" }
]
},
{
"id" : "resultType",
"type" : "descriptor",
"description" : {"value" : "results format"},
"ext" : [
{
"href" : "http://alps.io/ext/range",
"value" : "summary,detail"
}
]
}
]
}
}例如,一个通用的移动电话应用程序,它根据REST的响应向用户显示屏幕。假设HAL+Json响应包含对搜索实体的引用。该应用程序可以在阿尔卑斯山文档中查找搜索实体是什么,并可以对如何表示该实体进行编码。也就是说,搜索是有一个name/value对(带有id)和一个href的东西。href指的是带有id resultType的第二个descriptor,它让应用程序知道搜索结果的格式。所涉及的实际URL和数据将来自其余的响应。
从2014年7月开始,这里有一个描述阿尔卑斯山的春季博客文章,用于管理一个“待办事项列表”。阿尔卑斯山文档描述
这个小应用程序的ALPS简介的节略版:
{
"version" : "1.0",
"descriptors" : [ {
"id" : "todo-representation",
"descriptors" : [ {
"name" : "description",
"doc" : {
"value" : "Details about the TODO item",
"format" : "TEXT"
},
"type" : "SEMANTIC"
}, {
"name" : "title",
"doc" : {
"value" : "Title for the TODO item",
"format" : "TEXT"
},
"type" : "SEMANTIC"
}, {
"name" : "id",
"type" : "SEMANTIC"
}, {
"name" : "completed",
"doc" : {
"value" : "Is it completed?",
"format" : "TEXT"
},
"type" : "SEMANTIC"
} ]
}, {
"id" : "create-todos",
"name" : "todos",
"type" : "UNSAFE",
"rt" : "#todo-representation"
}, {
"id" : "get-todos",
"name" : "todos",
"type" : "SAFE",
"rt" : "#todo-representation"
}, {
"id" : "delete-todo",
"name" : "todo",
"type" : "IDEMPOTENT",
"rt" : "#todo-representation"
} ]
}我想有一种方式可以把它看作一种“模式”,但是它不是描述数据库表,而是描述REST响应的范围。
https://stackoverflow.com/questions/31247629
复制相似问题