【问题标题】:REST javascript clientREST JavaScript 客户端
【发布时间】:2013-07-07 20:44:23
【问题描述】:

是否有 JavaScript REST 客户端的最佳实践。具体来说,我想知道 如何关注链接。 假设我有一个任务类

public class Task
{
    public long TaskId { get; set; }
    public string Subject { get; set; }
    public bool Completed { get; set; }
    public bool Canceled { get; set; }
    public List<Link> Links { get; set; }
}

假设这个服务模型类的实例被发送到 javascript 客户端:

{
    TaskId : '1',
    Subject : 'Some',
    Completed: false,
    Canceled : false,
    Links : [{Rel:'Completed', URL:'http://myadress/tasks/1/complete'}, 
             {Rel:'Canceled ', URL:'http://myadress/tasks/1/cancel'}]

}

现在我想完成这个任务。这应该通过使用 Rel 的链接来完成:已完成。但是怎么做呢?我应该只是发布到 URL 并获取任务的新表示,还是应该创建类似的东西

var x = {
    TaskId : '1',
    Subject : 'Some',
    Completed: false,
    Canceled : false,
    complete : function(callback){ 
               // post to completed URL, and callback with new representation
               }
    Links : [{Rel:'Complete', URL:'http://myadress/tasks/1/complete'}, 
             {Rel:'Cancel ', URL:'http://myadress/tasks/1/cancel'}]    
}

x.complete(callback);

还是创建专用函数?

function completeTask(task, callback){
var url = //search links property for rel:Colmplete and get URL
//complete task
//callback with the new representation

}

【问题讨论】:

  • 这并不能回答你的问题,但它可能会给你灵感。查看 Node.js 模块 unio (github.com/ttezel/unio)。作为 HATEOAS 的替代方案,它更喜欢在 JSON 规范中映射 REST API,并提供使用规范来理解和使用 API 的通用客户端。即使你不能直接使用 unio,它也可能会给你一些开发客户端代码的想法。

标签: javascript rest asp.net-web-api


【解决方案1】:

我并不生活在 Javascript 世界中,但我相信我采用的方法仍然有效。我创建与链接关系相关的对象。因此,您将拥有一个知道如何发出 HTTP 请求的 completeLink 对象和“cancelLink”对象。

唯一缺少的信息是您将从表示中提取的 URI。客户端可以选择更改默认回调行为,因为并非所有客户端都会对来自链接的响应执行相同的操作。但是,所有客户端都应该能够重用逻辑来实际发出 HTTP 请求,因为链接关系明确定义了该行为。

我很想看看它在 JS 中的样子。我希望我能更好地了解这门语言。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多