如何使用cfhttp创建REST删除方法

时间:2014-06-26 14:18:19

标签: rest coldfusion coldfusion-10

我以前从未这样做过,现在当需要出现时,事情就不起作用了 我必须发送一个ID来删除带有RESTful服务的数据库记录。这是我正在尝试的代码:

<cfhttp url="http://127.0.0.1:8500/rest/test/something" method="DELETE" port="8500" result="qryRes1">
<cfhttpparam type="body" value="36"/>
</cfhttp>

并在REST函数中

remote any function someName() httpmethod="DELETE"{
var testID = ToString(getHTTPRequestData().content);
//make db call to delete
return testid;
}

结果为空白[空字符串]。我无法在函数中检索发送的值。我缺少什么?
编辑:略有不同但与CF休息有关,是否有必要在将查询发送回客户端之前将其转换为数组?直接序列化不会以同样的方式解决目的吗?

1 个答案:

答案 0 :(得分:2)

您可能需要查看http://www.anujgakhar.com/2012/02/20/using-rest-services-in-coldfusion-10/中的deleteUser()作为如何在REST API样式中支持DELETE的示例。

remote any function deleteUser(numeric userid restargsource="Path") httpmethod="DELETE" restpath="{userid}"
{
    var response = "";
    var qry = new Query();
    var userQry = "";

    qry.setSQl("delete from tbluser where id = :userid");
    qry.addParam(name="userid", value="#arguments.userid#", cfsqltype="cf_sql_numeric");
    userQry = qry.execute().getPrefix();

    if(userQry.recordcount)
    {
        response = "User Deleted";
    } else {
        throw(type="Restsample.UserNotFoundError", errorCode='404', detail='User not found');
    }

    return response;
}  

至于你问题的第二部分,最好先将查询转换为结构数组,除非你使用CF11为你做这件事。请参阅:http://www.raymondcamden.com/index.cfm/2014/5/8/ColdFusion-11s-new-Struct-format-for-JSON-and-how-to-use-it-in-ColdFusion-10

CF 8到10中查询的默认JSON结构是在Adobe已经停用的Spry framework之上为ColdFusion中的<cfgrid>设计的。