所有分类
  • 所有分类
  • 后端开发
后台接口运转如丝般顺畅:request包教你get、post两开花

后台接口运转如丝般顺畅:request包教你get、post两开花

request。的params要求就是要包含url请求地址。来验证请求的参数。。request对于不同请求方式的数据接收的字段是不同的。下面代码会将接收到到文件流写入到后端local。

哈喽,这回咱们要聊的是服务器渲染里的破事儿,那就是如何让后台接口顺畅运转。别急,我这儿有个秘诀,就是用请求那个包轻松搞定!做好迎接新知识的准备?

const request = require('request')

function request (uri, options, callback) {
 if (typeof uri === 'undefined') {
 throw new Error('undefined is not a valid uri or options object.')
 }
 var params = initParams(uri, options, callback)
 if (params.method === 'HEAD' && paramsHaveRequestBody(params)) {
 throw new Error('HTTP HEAD requests MUST NOT include a request body.')
 }
 return new request.Request(params)
}

大家都知道 request 这个家伙怎么用吗?就把 url 扔进去,就搞定了 get 请求!简单?记住,新手们!它还有其他实用的小功能,像那个得留心的参数。而且,用起来方便得很,参数传输也是多样化,让我们来看看具体咋样!

// 方式一
request(url,options,callback)
// 方式二
let options = {
 url // 必填
}
request(options,callback)

想在Forms里马上获取用户输入?传点参数给form就搞定。对了,忘了告诉你,requesting还附赠个特好用的调试功能,只要设request.debug = true就能开起来!感兴趣的话,立马去试试看用pm2 start app.js –watch触发你的项目,再拿pm2 log一探究竟查询日志!

// 方式一
request.get(url,options,callback)
// 方式二
let options = {
 url // 必填
}
request.get(options,callback)
// 方式一
request.post(url,options,callback)
// 方式二
let options = {
 url
}
request.post(options,callback)

后台接口运转如丝般顺畅:request包教你get、post两开花

Post请求可不像Axios、Fetch那样简单,它特别复杂,需要处理各种情况。还有,接受什么样的数据还得看发起的是什么请求!比如,Get请求就习惯性地用那种名叫”application/x-www-form-urlencoded”的编码方式传递消息,这个已经成为惯例。

function initParams (uri, options, callback) {
 // 处理没有传 options 的情况
 if (typeof options === 'function') {
 callback = options
 }
 var params = {}
 if (typeof options === 'object') {
 extend(params, options, {uri: uri})
 // 传递的 url 最终也会被合并到 pramas 上
 // 并且如果你在 options 传递了 uri 会被第一参数覆盖,优先级以 第一个入参uri为准
 } else if (typeof uri === 'string') {
 extend(params, {uri: uri})
 } else {
 // 处理第一参数不是url的情况
 extend(params, uri)
 }
 params.callback = callback || params.callback
 return params
}

想要在formData里加个附件么?简单!用fs.createReadStream拿到文件,扔给formData就行了。而且,不用管什么设置或者前端后端的事情,当你看见content-type变为multipart/form-data就对了,提示你已经成功了~

// 定义了 baseUrl 后只需要传递接口 api 即可
function fetchPost(path,params){
 return new Promise( (resolve,reject)=>{
 request.post(path,{
  baseUrl:"http://localhost:9000/react/",
 },function(err, httpResponse, body){
  if(err){
  reject(err)
  }else{
  resolve(body)
  }
 })
 })
}
// 使用,只传递了接口部分最终会拼接成 http://localhost:9000/react/c-request
router.get('/c-request',async ctx=>{
 let res = await fetchPost('request-header',{value:1,name:'dd'})
 ctx.body = res
})

哈喽!记住,这个参数要放到 body里头,千万别忘记加上 “json=true” 。这样一搞,你的请求 content-type就变成 application/json了,连同传过去的 body数据都会帮你自动变身成为 JSON 格式咯。是不是觉得特别省心?接着说,咱用 pm2 去启动 app.js 的时候,别忘了在后边加个 “requests” ,这样处理起来更顺手些。

好了,相信你已经搞懂request这款神器了!它就是帮咱们顺利完成服务器通信和和后台配合滴。如果你在忙着开发服务器渲染或者后台相关项目的话,赶紧去试试request!惊喜肯定让你意想不到!今天,我们学到了怎么借助request解决服务器问题。它用途贼广,可以满足我们各种奇怪的要求。如果你熟悉Server-side Rendering(SSR)或者ftware Backend Interface Development(SBID)的话,那request可千万不能错过!别忘了分享给你的小伙伴们

function fetchPost(path,params){
 return new Promise( (resolve,reject)=>{
 request.debug = true
 request.post(path,{
  form:params
 },function(err, httpResponse, body){
  if(err){
  reject(err)
  }else{
  resolve(body)
  }
 })
 })
}

原文链接:https://www.icz.com/technicalinformation/web/2024/03/11438.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?