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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介: 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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5月前
|
JavaScript 前端开发 开发者
Nest.js控制器深度解析:路由与请求处理的高级特性
以上就是对 NestJS 控制层高级特性深度解析:从基本概念到异步支持再到更复杂场景下拦截其与管道等功能性组件运用都有所涉及,希望能够帮助开发者更好地理解和运用 NestJS 进行高效开发工作。
410 15
|
8月前
|
JavaScript 前端开发 API
Node.js中发起HTTP请求的五种方式
以上五种方式,尽管只是冰山一角,但已经足以让编写Node.js HTTP请求的你,在连接世界的舞台上演奏出华丽的乐章。从原生的 `http`到现代的 `fetch`,每种方式都有独特的风格和表现力,让你的代码随着项目的节奏自由地舞动。
771 65
|
5月前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
488 1
|
11月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
存储 JavaScript NoSQL
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
254 9
|
JavaScript
Node.js GET/POST请求
10月更文挑战第6天
211 2
Node.js GET/POST请求
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
开发框架 JavaScript 前端开发
Node.js日记:客户端和服务端介绍、Node.js介绍
Node.js日记:客户端和服务端介绍、Node.js介绍
|
JavaScript 前端开发 开发工具
Node.js——初识Node.js
Node.js——初识Node.js
214 4

热门文章

最新文章