gpt4 book ai didi

rest - ALPS 示例实现

转载 作者:行者123 更新时间:2023-12-01 05:03:19 24 4
gpt4 key购买 nike

我正在寻找使用 ALPS 的示例客户端实现(不是山,而是应用程序级配置文件语义)。
你!有吗?
我查看了相关的 RFC draft和讨论,但仍然可以弄清楚。
具体来说,我想知道我的客户应该如何知道描述符描述的内容,因为我的客户应该对 REST 原则要求的 REST API 的结构和语义一无所知?
作为人类,我知道带有 id 的描述符名为“用户”的标签可能会描述如何与用户交互,但如果我没有明确告诉他,我的客户如何知道?
我知道我可以插入某种关键字以显示在描述符中并告诉我的客户匹配适当的关键字,但这似乎不是正确的方法。
如果有人愿意阅读它,我很乐意提供一个更详细的示例。

最佳答案

我也是第一次探索 ALPS,我对 RFC 草案的理解也不是立竿见影的。

这是一个 slideshow (166 slides, so it's not possible to copy it all into this answer)来自 RFC 的作者,我认为它可以更好地理解 ALPS 所扮演的角色。

As a human I know that a descriptor with an id tag called users is likely to describe how to interact with users but how is my client to know this without me telling him explicitly?



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

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

这是一个例子 完整的 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响应包含对搜索实体的引用。应用程序可以在这个 ALPS 文档中查找搜索实体是什么,并且可以编码如何表示它。也就是说,搜索是具有 name/value 的东西。配对(带有一个 id)和一个 href . href指的是第二个 descriptor带有 id resultType,它让应用程序知道搜索结果的预期格式。涉及的实际 URL 和数据将来自 REST 响应。

从 2014 年 7 月开始,这里是 Spring blog article描述管理“待办事项列表”的应用程序的 ALPS。 ALPS 文档描述了
  • 什么是todo实体
  • 一个 todo 实体可以做什么 Action

  • 该小应用程序的 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 响应的范围。

    关于rest - ALPS 示例实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31247629/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com