首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带绝对url前缀的获取

带绝对url前缀的获取
EN

Stack Overflow用户
提问于 2017-02-26 16:07:27
回答 2查看 20.2K关注 0票数 4

大多数情况下,我在获取节点取前面加上一个http://localhost (使其成为一个绝对的url)。

代码语言:javascript
复制
import fetch from 'node-fetch';

fetch('http://localhost/whatever')

除了简单地将localhost放在变量中之外,还有其他避免localhost部件的方法吗?

代码语言:javascript
复制
const baseUrl = 'http://localhost';

fetch(`${baseUrl}/whatever`)

https://stackoverflow.com/questions/42467611/superagent-with-absolute-url-prefix密切相关

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-26 16:07:27

TL;DR: 取-绝对正是这样做的。

详细信息:

您可以在获取之上创建一个抽象层。

代码语言:javascript
复制
function fetchAbsolute(fetch) {
  return baseUrl => (url, ...otherParams) => url.startsWith('/') ? fetch(baseUrl + url, ...otherParams) : fetch(url, ...otherParams)
}

或者您可以简单地使用取-绝对

代码语言:javascript
复制
const fetch = require('node-fetch');
const fetchAbsolute = require('fetch-absolute');

const fetchApi = fetchAbsolute(fetch)('http://localhost:3030');

it('should should display "It works!"', async () => {
  const response = await fetchApi('/');
  const json = await response.json();
  expect(json).to.eql({ msg: 'It works!' });
});
票数 3
EN

Stack Overflow用户

发布于 2020-05-14 12:49:27

您可以重写fetch函数:

代码语言:javascript
复制
import origFetch from 'node-fetch';

const fetch = (url, ...params) => {
  if (url.startsWith('/')) return origFetch('http://localhost' + url, ...params)
  else return origFetch(url, ...params);
}

另一个答案是创建一个函数,该函数返回一个函数--这是不必要的;您只需要返回一个函数。

代码语言:javascript
复制
function fetchAbsolute(fetch, base_url) {
  return (url, ...params) => {
    if (url.startsWith('/')) return fetch(base_url + url, ...params)
    else return fetch(url, ...params);
  }
}

const fetch = fetchAbsolute(origFetch, 'http://localhost');
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42470822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档