我以前从未这样做过,现在当需要出现时,事情就不起作用了 我必须发送一个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休息有关,是否有必要在将查询发送回客户端之前将其转换为数组?直接序列化不会以同样的方式解决目的吗?
答案 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>
设计的。