Articles of fetch api

获取无法从服务器获得响应

我有个问题。 在客户端,我使用获取API获取响应,这是代码 window.fetch('/signup', { method: 'post', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: formDataStr, credentials: 'same-origin' }) .then(function (response) { return response.json() }) .then(function (result) { if (result.code === 0) { return this.$router.push('/main') } }) .catch((err) => { self.isLoading = false console.log(err) }) 在服务器中,它是写在节点和expression,这是代码: `app.post('/login', function (req, res) { var loginEmail = req.body.email2 var loginPsd = […]

如何使用应用程序/ x-www-form-urlencoded头和URLSearchParams使用isomorphic-fetch进行POST

这是一个正常工作的CURL示例: curl –request POST \ –url <url> \ –header 'authorization: Bearer <authorization token>' \ –header 'content-type: application/x-www-form-urlencoded' \ –data 'category=1&userId=<uuid>' 我试图重现这个请求使用同构获取 。 我试过这个: const searchParams = new URLSearchParams(); searchParams.set('category', category); searchParams.set('userId', userId); return fetch(`<url>`, { method: 'POST', headers: { 'Authorization: Bearer <authorization token>', 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' }, body: searchParams })` 但是我得到一个411状态码错误响应( 需要的长度 ) […]

在同一个提取POST API调用中返回JSON

我目前有一个基于Node.js的Express框架构build的Web应用程序。 我现在正在构build一个需要执行用户login的React Native应用程序。 为此,我创build了一个mongo-helpers.js文件,它将简单地执行api调用localhost:3000 / api并返回JSON。 到目前为止,我没有任何问题进行GET调用和接收数据,但是这是我的问题,我想要做什么: 目标 :按下loginbutton(在React Native应用程序中),调用localhost:3000 / api / login,将username和password传递到fetch API POST请求的body中。 如果用户login,则发回用户的Mongo文档。 问题 :虽然我能够发出API Post请求并成功login用户,但我无法用res.json(user)发送用户的Mongo文档。 这是我的代码: Express WEB APP: routes / api / api.js // POST and login user router.post('/login', (req, res) => { user.findOne({name: req.body.name, password: req.body.password}) .then((user) => { console.log(user); res.json(user) }) .catch((error) => res.json(error)) }); 反应本机应用程序: mongo-helpers.js […]

node.js表示一个非常奇怪的行为

我有一个运行的Express服务器。 我所做的是从HTML上传Excel文件,然后快速parsing该文件,并做一些计算。 在Excel文件中,每行都有关于用户地址的信息。 对于每个地址,我们的快递服务器将使用谷歌地图地理编码API来计算经度和纬度。 但是,由于Google不接受每秒超过50个地理编码API的请求,所以我不得不使用settimeout来延迟计算。 例如,如果Excel文件有50个地址,所以我必须在每个地址上使用settimeout来避免这个速率限制。 这里是我的代码使用settimeout并计算纬度,经度 createFromFile(req, res) { var form = new formidable.IncomingForm(); return form.parse(req, function (err, fields, files) { if (err) return res.status(500).json({error: err.message}) var workbook = new exceljs.Workbook(); return workbook.xlsx.readFile(files.excelfile.path).then(function() { // use workbook var worksheet = workbook.getWorksheet(1) var data = [] for (var i=2; i<=worksheet.rowCount; i++) { data.push({ from_name: worksheet.getCell('A'+i).value […]

不能读取节点中的读取后

我将数据{id: "abc123", text: "sometext"}到节点API。 从action调用的组件发布: export function addTextToAPI(inputData) { return(dispatch) => { console.log(inputData), dispatch(addText(inputData)) fetch(myapi, { headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, method: 'POST', data: inputData }) .then(res => res.json()) } } console.log(inputData)是{id: "abc123", text: "sometext"} 节点: var express = require('express'); var bodyParser = require('body-parser'); var app = express(); app.use(bodyParser.json()); app.post('/addtest', (req, res) => […]

抓取Api:无法从本地主机获取数据

我一直在尝试使用nativescript创build一个android应用程序。我使用获取模块从我的服务器获取响应。当我试图从httpbin.org/get获取响应时,它是可以的。但是当我试图获得响应从我的本地服务器,我得到networking请求失败。 错误。 发送到httpbin.org/get- return fetchModule.fetch("https://httpbin.org/get").then(response => { return response.text(); }).then(function (r) { console.log(r); }, function (e) { console.log(e); }); 发送到本地主机:8000 / api- return fetchModule.fetch("http://localhost:8000/api").then(response => { return response.text(); }).then(function (r) { console.log(r); }, function (e) { console.log(e); }); 当我尝试通过请求模块得到localhost:8000 / api中纯node.js的响应时,它运行良好。但是现在,我不知道如何使用fetch模块来解决nativescript中的这个问题。

使用节点提取时,不能调用其types缺less调用签名的expression式

我试图让我的脚本工程中的node-fetch工作: import * as fetch from 'node-fetch'; import * as assert from 'assert'; export class DatabaseConfigurator { private url: string; getNode (): Promise<string> { return fetch(`${this.url}/_membership`).then((response: fetch.Response) => { return response.json(); }).then((res: any) => { assert.equal(res.all_nodes.length, 1); return res.all_nodes[0]; }); } } 我得到: Cannot invoke an expression whose type lacks a call signature. Type 'typeof […]

阅读提取承诺的正文

我确信这个问题有一个简单的答案,但是对于我来说,我无法弄清楚如何去做。 我有以下快速端点用于上传到Google云端存储。 它工作得很好,从谷歌API的响应给我一个独特的文件名,我想回传到我的前端: app.post('/upload', (req, res) => { var form = new formidable.IncomingForm(), files = [], fields = []; form .on('field', function(field, value) { fields.push([field, value]); }) .on('file', function(field, file) { files.push([field, file]); }) .on('end', function() { console.log('-> upload done'); }); form.parse(req, function(err, fields, files){ var filePath = files.file.path; bucket.upload(filePath, function(err, file, apiResponse){ if (!err){ […]

为什么浏览器返回意外的input结束时,我可以从浏览器获取API响应?

我有一个非常基本的反应前端和一个非常基本的nodejs服务器。 我试图validation服务器上的用户名和密码,当客户端点击提交,然后最终redirect到他们的仪表板。 现在我无法发送用户数据请求了。 这是我在服务器上非常基本的身份validationfunction,身份validation和searchusers等function不是asynchronous的。 // Authorization app.get('/auth/:userId/:hash', function(req, res){ var id = req.params.userId.toString(); var hash = req.params.hash.toString(); var error = { err: 'something went wrong!' } var user = dm.searchUser(id, users); if (!user){ res.json(error); } var isAuthenticated = dm.authenticate(user, hash); if (!isAuthenticated){ res.json(error); } if(isAuthenticated){ console.log('authed') res.json(user); } }); 这是处理表单提交行为的客户端反应组件方法。 submit(e){ e.preventDefault(); const BASE_URL = […]

我怎样才能从浏览器发送一个大文件到Node.js服务器?

我试图使用data: URL从客户端发送到服务器的图像。 我读取上传的图像并将数据发送到服务器的function非常简单: getTags = event => { const file = event.target.files[0]; if (!file.type.match('image.*')) { return; } const reader = new FileReader(); reader.onload = (theFile => { return (e) => { this.sendDataToServer(e.target.result, theFile.type); }; })(file); reader.readAsDataURL(file); } sendDataToServer = (data, fileType) => { const options = { method: 'POST', headers: { 'Content-Type': fileType, }, body: […]