当前位置:  开发笔记 > 编程语言 > 正文

如何通过与RPC样式服务相对的REST服务添加新数据?

如何解决《如何通过与RPC样式服务相对的REST服务添加新数据?》经验,为你挑选了0个好方法。

我还在学习REST,在我的测试中,想出了这个我不知道如何处理的场景.

我有一个使用Linq-to-Sql的现有示例WCF服务.它是一个非常简单的数据库,带有一个名为"Tasks"的表,它有四个字段:Id,Description,IsCompleted和EnteredDate.(我之所以提到这是因为我没有在服务本身中定义数据合约,它都来自Linq创建的Context.)

获取数据对于转换为REST来说是微不足道的......就像删除数据一样.但是,插入新记录似乎并不容易.

我的RPC样式的合同操作如下所示:

    [OperationContract]
    void AddTask(string description);

不需要Id,IsCompleted和EnteredDate,因为服务实现如下所示:

    public void AddTask(string description)
    {
        TaskListLinqDataContext db = new TaskListLinqDataContext();
        Task task = new Task() 
           { Description = description, IsCompleted = false, 
             EntryDate = DateTime.Now };

        db.Tasks.InsertOnSubmit(task);
        db.SubmitChanges();
    }

Id是一个标识,因此由数据库处理.

我的第一个想法是装饰这样的操作合同:

    [WebInvoke(Method="PUT", UriTemplate="tasks/{description}")]
    [OperationContract]
    void AddTask(string description);

但我真的不知道如何让它发挥作用.当我尝试使用Fiddler添加它时,它返回结果411(需要长度).

这样做的正确方法是什么?我是否必须重新编写实现以接受表示新记录的整个XML文档?

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有