NodeJS 发送 POST 请求 curl -d & JS 类的静态属性使用

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: NodeJS 发送 POST 请求 curl -d & JS 类的静态属性使用'use strict';const Service = require('.

NodeJS 发送 POST 请求 curl -d & JS 类的静态属性使用

'use strict';

const Service = require('../lib/ServiceBase')
const tables = require('../lib/tables')
var http = require('http')
var querystring = require('querystring');

/**
 * 授权绑定淘宝服务 @author Jack
 * @class
 * @extends Canary.Service
 */
class WealtimePersonBindService extends Service {
  constructor(ctx) {
    super(ctx)
    WealtimePersonBindService.ctx = ctx;
  }

  get table() {
    return tables.wealtimePersonBind
  }

  /**
   * 淘宝授权绑定
   * @param item
   * @returns {null}
   */
  * add(item) {
    const me = this
    const user = this.user
    console.log(`user ===> ${JSON.stringify(user)}`)
    console.log(`item ===> ${JSON.stringify(item)}`)

    var code = item['code']
    console.log(`code ===> ${JSON.stringify(code)}`)
    var bindtype = item['bindtype']

    // curl -d "code=QOwnL6ukr3LJzz2r2uVJgFnz12673853&grant_type=authorization_code&client_id=24779841&client_secret=971a06012b81382350a26ae48c2ebe0d&redirect_uri=https://welare.alibaba-inc.com/#/profile" https://oauth.taobao.com/token
    var contents = querystring.stringify({
      code: code,
      grant_type: 'authorization_code',
      client_id: '24779841',
      client_secret: '971a06012b81382350a26ae48c2ebe0d',
      redirect_uri: 'https://welare.alibaba-inc.com/#/profile'
    });

    console.log(`post contents ===> ${contents}`);

    var options = {
      host: 'oauth.taobao.com',
      path: '/token',
      method: 'POST',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        //只有post时,这个才有用
        'Content-Length': contents.length
      }
    }

    var requestCallback = (response) => {
      response.setEncoding('utf-8');
      var receiveData = "";
      response.on('data', (chunk) => {
        receiveData += chunk;
      }).on('end', () => {
        console.log('getAccessToken body 分隔线---------------------------------\r\n');
        console.log(`accessToken ===> ${JSON.stringify(receiveData)}`);

        var accessToken = JSON.parse(receiveData)
        var taobao_user_id = accessToken.taobao_user_id
        var taobao_user_nick = accessToken.taobao_user_nick
        console.log(`taobao_user_id = ${taobao_user_id}`)
        console.log(`taobao_user_nick = ${taobao_user_nick}`)
        if (taobao_user_id && taobao_user_nick) {
          try {
            // 写入活动记录
            console.log('WealtimePersonBindService.ctx =========================>')
            console.dir(WealtimePersonBindService.ctx)
            console.log('WealtimePersonBindService.ctx.app.mysql =========================>')
            var mysql = WealtimePersonBindService.ctx.app.mysql
            console.dir(mysql)
            var ret = mysql.insert(me.table, {
              taobao_user_id: taobao_user_id,
              taobao_user_nick: taobao_user_nick,
              // 人员信息
              work_no: user['workid'],
              emp_name: user['lastName'],
              nick_name: user['name'],
              bind_type: bindtype,
              gmt_create: new Date(),
              gmt_modified: new Date(),
            });
            return ret.insertId
          } catch (e) {
            console.log(`[service.WealtimePersonBindService.add] ${e}`);
            throw e
          }
        }
      });
    };

    // post 请求 AccessToken
    var req = http.request(options, requestCallback).on('error', function (e) {
      console.log(e.message);
    });

    req.on('error', function (e) {
      console.log(`getAccessToken error ===> ${JSON.stringify(e)}`)
    });
    req.write(contents);
    req.end();
  }
}

WealtimePersonBindService.ctx;

module.exports = WealtimePersonBindService

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
46 1
|
18天前
|
存储 JavaScript NoSQL
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
46 9
|
1月前
|
JavaScript 前端开发 中间件
JS服务端技术—Node.js知识点
本文介绍了Node.js中的几个重要模块,包括NPM、Buffer、fs模块、path模块、express模块、http模块以及mysql模块。每部分不仅提供了基础概念,还推荐了相关博文供深入学习。特别强调了express模块的使用,包括响应相关函数、中间件、Router和请求体数据解析等内容。文章还讨论了静态资源无法访问的问题及其解决方案,并总结了一些通用设置。适合Node.js初学者参考学习。
44 1
|
1月前
|
开发框架 JavaScript 前端开发
Node.js日记:客户端和服务端介绍、Node.js介绍
Node.js日记:客户端和服务端介绍、Node.js介绍
|
2月前
|
JavaScript
Node.js GET/POST请求
10月更文挑战第6天
43 2
Node.js GET/POST请求
|
1月前
|
JavaScript 前端开发 开发工具
Node.js——初识Node.js
Node.js——初识Node.js
34 4
|
1月前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
40 4
|
1月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
2月前
|
缓存 JavaScript CDN
一次js请求一般情况下有哪些地方会有缓存处理?
一次js请求一般情况下有哪些地方会有缓存处理?
44 4
|
2月前
|
消息中间件 JavaScript 前端开发
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
50 1