Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RESTJavaScript客户端_Javascript_Rest_Asp.net Web Api - Fatal编程技术网

RESTJavaScript客户端

RESTJavaScript客户端,javascript,rest,asp.net-web-api,Javascript,Rest,Asp.net Web Api,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<L

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; }
}
现在我想完成这项任务。这应该通过以下链接完成:Rel:Completed。但如何做到这一点呢?我应该仅仅发布到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

}

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

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


我很想看看在JS中会是什么样子。但愿我能更好地掌握这门语言。

这并不能回答你的问题,但可能会给你灵感。查看Node.js模块unio()。作为HATEOAS的替代方案,它更喜欢在JSON规范中映射restapi,并提供使用该规范理解和使用API的通用客户机。即使您不能直接使用unio,它也可能会为您开发客户机代码提供一些想法。
function completeTask(task, callback){
var url = //search links property for rel:Colmplete and get URL
//complete task
//callback with the new representation

}