問題: Node.jsからリクエストを送信してデータソースを作成するColdFusion RESTサービスを作成できません。 Node.jsからColdFusionのレストサービスにデータをポストしようとするたびに、引数の値が空になります。node.jsからcoldfusion restサービスへのデータの投稿
コードIが変数htOptions
にheaders
オプションを含むしようとすると、私は次のエラーを取得する
<cfcomponent rest="true" restPath="/dsnComponent">
<cffunction name="createDataSource" access="remote"
returnType="any" httpMethod="POST" restpath="{strDSN}" produces="application/JSON">
<cfargument name="strDSN" default="" type="any" restargsource="form">
<cfdump var = #strDSN# format="html" output="D:\api.html">
<cfset reqDSN = deserializeJSON(strDSN)>
<cfset structDSN = structNew() >
<cfset structDSN.driver = "MSSQLServer" >
<cfset structDSN.name = reqDSN.name >
<cfset structDSN.host = "localhost" >
<cfset structDSN.port = "1433" >
<cfset structDSN.database = reqDSN.name>
<cfset structDSN.username = "sa" >
<cfset structDSN.password = "*****" >
<cfscript>
adminObj = createObject("component","cfide.adminapi.administrator");
adminObj = adminObj.login('***','admin');
myObj = createObject("component","cfide.adminapi.datasource");
myObj.setMSSQL(argumentCollection = structDSN);
structDSN.success = myObj.verifyDSN(dsn = structDSN.name, returnMsgOnError = 'true');
</cfscript>
<cfset res = serializeJSON(structDSN) />
<cfreturn structDSN>
</cffunction>
</cfcomponent>
ColdFusionのRESTサービスのためにコードのNode.jsから
var http = require('http'),
postData = {
name: "ab"
},
postData = JSON.stringify(postData),
htOptions = {
hostname: 'localhost',
port: 8500,
path: "/rest/createdsn/dsnComponent/createDataSource",
method: "POST",
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(postdata)
}
}
var req = http.request(htOptions);
console.log(postData) // {"name":"ab"}
req.write(postData);
req.end();
req.on('response', (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
res.on('end',() => {
console.log('No more data in response.')
})
console.log('api successfully called');
});
をデータを投稿するため
私はヘッダが含まれていない場合、私はRESTサービスを呼び出すためにCFMページを作成し、それが成功したデータ・ソースを作成した私の引数に空の文字列を取得し、エラー
{"Message":"JSON parsing failure: Unexpected end of JSON string"}
を受け取りますColdFusion Administratorで
コード
<cfset structDSN.name = "ab">
<cfset strDSN = serializeJSON(structDSN)>
<cfhttp url="http://localhost:8500/rest/createdsn/dsnComponent/createDataSource" method="post" port="8500" result="res">
<cfhttpparam name="strDSN" value="#strDSN#" type="formfield" />
</cfhttp>
私は何が間違っているのか分かりません。
node.jsコードのどの行が引数を提供するはずですか? –
あなたのCF投稿の例にはヘッダーの権利が含まれていませんか? –
あなたが500のエラーを受け取ったら、api.htmlに何かが表示されますか? –