1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用got替换request对json的http请求封装js实现以及node的ts包发布

使用got替换request对json的http请求封装js实现以及node的ts包发布

时间:2020-02-22 15:14:51

相关推荐

使用got替换request对json的http请求封装js实现以及node的ts包发布

对于ts版本node的包发布

/package/xmrequest目前,已经在我用的几个项目中使用了,暂时没有问题。npm i xmrequest 就可以使用。支持代码提示

使用got替换request对json的http请求封装js实现

由于node的request已经不再维护更新了,虽然还可以继续使用。工作中,有很多使用http+json的调用,所以在这里再次用got做一次简单封装依赖库有三个got, xmcommon,lodash至少要基于node 8或以上的版本

npm install got xmcommon lodash

然后把这个放到你的工程中,就可以了。建议使用vscode编写,这样就可以直接有代码提示了。

const got= require('got');const xmcommon = require('xmcommon');const _ = require('lodash');/** HTTP的方法 */const HttpMethod = {get : 'GET',post : 'POST',put : 'PUT',patch : 'PATCH',head : 'HEAD',delete : 'DELETE',options: 'OPTIONS',trace : 'TRACE'};/** 请求代理人定义 */const userAgent = "LRTech";const userAgentKey = 'user-agent';/*** GotUtils说明* - 由于request已经停止更新,并且已经标记为deprecated了,为了未来的使用考虑,所以使用got代替request, 实现了这个类* - 处理的结果与RequestUtils一样*/class GotUtils {/*** 初始化选项* - 这里会增加一个user-agent的header选项* @param {object} paramOptions 默认传入的选项* @param {string} paramMethod 要设置的方法 @see HttpMethod* @param {object} paramheaders http的header选项* @return {object} 返回初始化的options*/static initOptions(paramOptions, paramMethod, paramheaders) {if (xmcommon.utils.isNull(paramOptions)) {paramOptions = {};}if (!xmcommon.utils.isObject(paramOptions)) {paramOptions = {};}if (xmcommon.utils.isNull(paramheaders)) {paramheaders = {};}if (!xmcommon.utils.isObject(paramheaders)) {paramheaders = {};}let options = _.clone(paramOptions);options.headers= _.clone(paramheaders);options.headers[userAgentKey] = userAgent;options.method= paramMethod;return options;}/*** 这个是通过 application/x-www-form-urlencoded 方式上传参数* @param {string} paramURL 请求的URL* @param {object} paramBody 要表求的消息* @param {object} paramOptions 请求选项* @param {object} paramHeaders 请求的headers信息* @returns {{error ?: object, statusCode ?: number, statusMessage ?: string, body ?: string, response ?: any}} 响应结果*/static async post(paramURL, paramBody, paramOptions = {}, paramheaders = {}) {let options = this.initOptions(paramOptions, HttpMethod.post, paramheaders);options.form = paramBody;try {const r = await got(paramURL, options);return {error: undefined, statusCode: r.statusCode, statusMessage: r.statusMessage, body: r.body, response: r.response};}catch(e) {let ret = {error: e };if (xmcommon.utils.isNotNull(e.response)) {ret.statusCode = e.response.statusCode;ret.statusMessage = e.response.statusMessage;ret.response= e.response;} else {ret.statusCode = -1;ret.statusMessage = e.message;}return ret;}}/*** 这个是通过 application/x-www-form-urlencoded 方式上传参数* @param {string} paramURL 请求的URL* @param {object} paramBody 要表求的消息* @param {object} paramOptions 请求选项* @param {object} paramHeaders 请求的headers信息* @returns {{error ?: object, statusCode ?: number, statusMessage ?: string, body ?: string, response ?: any}} 响应结果*/static async jsonPost(paramURL, paramBody, paramOptions = {}, paramheaders = {}) {let options = this.initOptions(paramOptions, HttpMethod.post, paramheaders);options.json = paramBody;try {const r = await got(paramURL, options);return {error: undefined, statusCode: r.statusCode, statusMessage: r.statusMessage, body: r.body, response: r.response};}catch(e) {let ret = {error: e };if (xmcommon.utils.isNotNull(e.response)) {ret.statusCode = e.response.statusCode;ret.statusMessage = e.response.statusMessage;ret.response= e.response;} else {ret.statusCode = -1;ret.statusMessage = e.message;}return ret;}}/*** 这个是通过 get 方法调用请求* @param {string} paramURL 请求的URL* @param {object} paramBody 要表求的消息* @param {object} paramOptions 请求选项* @param {object} paramHeaders 请求的headers信息* @returns {{error ?: object, statusCode ?: number, statusMessage ?: string, body ?: string, response ?: any}} 响应结果*/static async get(paramURL, paramBody, paramOptions = {}, paramheaders = {}) {let options = this.initOptions(paramOptions, HttpMethod.get, paramheaders = {});options.searchParams = new URLSearchParams(paramBody);try {const r = await got(paramURL, options);return {error: undefined, statusCode: r.statusCode, statusMessage: r.statusMessage, body: r.body, response: r.response};}catch(e) {let ret = {error: e };if (xmcommon.utils.isNotNull(e.response)) {ret.statusCode = e.response.statusCode;ret.statusMessage = e.response.statusMessage;ret.response= e.response;} else {ret.statusCode = -1;ret.statusMessage = e.message;}return ret;}}}exports.GotUtils = GotUtils;exports.HttpMethod = HttpMethod;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。