最近在练习使用coffee script + nodejs写后端代码,一些原由ruby实现的功能尝试使用js实现,下面是调用百度PPC api的例子。
coffee script 代码部分
soap = require 'soap'
url = 'https://api.baidu.com/sem/sms/v3/AccountService?wsdl'
#nodejs soap包默认把‘tgn’也写在了ignored_namespace中,而不巧,baidu api中有一部分message使用的命名空间为'tgn'
#需要将tgn从ignored_namespace中剔除,否则发起的soap request body将无法自动适配命名空间
options =
ignoredNamespaces :
namespaces : ['targetNamespace', 'typedNamespace'],
override: true
#身份认证部分 注意下面需要添加命名空间,soap的命名空间又是什么呢?需要大家google一下
operation_header = () ->
'AuthHeader' :
'username' : 'username',
'password' : 'password',
'token' : 'token'
client = soap.createClient(url, options, (err,client) ->
client.addSoapHeader(operation_header(),null,'common','http://api.baidu.com/sem/common/v2')
client.getAccountInfo({},(error,result,xml) ->
console.log result
response = client.wsdl.xmlToObject(xml)
console.log(response.Header.ResHeader.rquota)
)
)
ruby 代码部分
gem install baidu
相关gem已由组内同事封装好了,同样还用sogou,qihu360
然后一切的一切就都可以搞定了...