首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ALPS示例实现

ALPS示例实现
EN

Stack Overflow用户
提问于 2015-07-06 13:50:48
回答 1查看 689关注 0票数 4

我正在寻找一个使用阿尔卑斯山的示例客户端实现(不是山区,而是应用程序级概要语义)。

你是!有一个吗?

我已经研究过相关的RFC草案和讨论,但仍然可以很好地理解它。

具体来说,我想知道我的客户端应该如何知道描述符描述的内容,因为我的客户机应该不了解REST原则所要求的REST的结构和语义?

作为一个人,我知道带有一个名为“用户”的id标记的描述符很可能描述如何与用户交互,但是我的客户端如何知道没有我明确地告诉他呢?

我知道我可以插入某种关键字来显示在描述符中,并告诉我的客户端匹配合适的关键字,但这似乎不是正确的方法。

我高兴地提供了一个更详细的例子,如果有人愿意读的话。

EN

回答 1

Stack Overflow用户

发布于 2018-03-10 12:01:35

我也是第一次探索阿尔卑斯山,我从RFC选秀中得到的理解也不是即时的。

这是一个来自RFC作者的幻灯片(166张幻灯片,所以不可能全部复制到这个答案中),我认为它能更好地理解阿尔卑斯山所扮演的角色。

作为一个人,我知道带有一个名为descriptorid标记的用户很可能描述如何与用户交互,但是我的客户如何知道这一点,而我没有明确地告诉他呢?

从这张幻灯片中,我推断出你的问题的答案:他没有。

在幻灯片显示中,将对ALPS示例配置文件与表单提交的等效HTML代码进行比较。浏览器知道如何将HTML呈现到屏幕上,但是只有人知道用这些输入字段发布表单意味着什么,使用提交按钮。

下面是一个示例完整的JSON表示,摘自alps.io

代码语言:javascript
复制
{ 
  "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月开始,这里有一个描述阿尔卑斯山的春季博客文章,用于管理一个“待办事项列表”。阿尔卑斯山文档描述

  1. 什么是待办实体?
  2. 对todo实体可以执行哪些操作?

这个小应用程序的ALPS简介的节略版:

代码语言:javascript
复制
{
  "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响应的范围。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31247629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档