Задать вопрос
Bekkazy
@Bekkazy

Как оправить запрос cURL в Node js?

Использую библиотеку curl-request.

Имеется запрос:
curl -D- -u fred:fred -X POST --data {see below} -H "Content-Type: application/json" localhost:8090/rest/api/2/issue

Со следующими данными:
{
"fields":
{
"project":
{
"key": "TEST"
},
"parent":
{
"key": "TEST-101"
},
"summary": "Sub-task of TEST-101",
"description": "Don't forget to do this too.",
"issuetype":
{
"id": "5"
}
}
}.

Вопрос, куда в этой библиотеке вставлять -u (авторизацию)? Никак не могу разобраться с cURL.
А остальные данные куда вставлять?
Вопросов много а ответов в документации нет. Впервые сталкиваюсь с cURL
  • Вопрос задан
  • 8414 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Aves
Можно примерно так:
const Curl = require('curl-request');

const req = new Curl();
const {auth: {BASIC}, option: {HTTPAUTH, USERNAME, PASSWORD}} = req.libcurl;

const url = 'localhost:8090/rest/api/2/issue';
const user = 'fred';
const password = 'fred';
const headers = ['Content-Type: application/json'];
const data = `{
  "fields": {
    "project": {
      "key": "TEST"
    },
    "parent": {
      "key": "TEST-101"
    },
    "summary": "Sub-task of TEST-101",
    "description": "Don't forget to do this too.",
    "issuetype": {
      "id": "5"
    }
  }
}`;

req
  .setOpt(HTTPAUTH, BASIC)
  .setOpt(USERNAME, user)
  .setOpt(PASSWORD, password)
  .setHeaders(headers)
  .setBody(data)
  .post(url)
  .then(res => { console.log(res) })
  .catch(e => { console.error(e) });
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Abigovor
full-stack developer (javascript/java)
В твоем случае это будет выглядеть приблизительно так

К сожалению c curl-request не знаком, не уверен можно ли обычный объект отправлять
const curl = new (require( 'curl-request' ))();

curl
.setHeaders([
    'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=', // dXNlcm5hbWU6cGFzc3dvcmQ= - это username:password в base64 кодировке 
    'Content-Type: application/json'
])
.setBody(dataObject)  // объект с передаваемыми данными
.post('https://localhost:8090/rest/api/2/issue')
.then(({statusCode, body, headers}) => {
    console.log(statusCode, body, headers)
})
.catch((e) => {
    console.log(e);
});


пример с использованием request-promise 100% сработает
const rp = require('request-promise');

var options = { 
	method: "POST", 
	uri: "https://localhost:8090/rest/api/2/issue", 
	body: dataObject, // объект с данными для сервера
	headers:{"Authorization":"Basic dXNlcm5hbWU6cGFzc3dvcmQ="}, // dXNlcm5hbWU6cGFzc3dvcmQ= - это username:password в base64 кодировке
	json: true
}

rp(options)
	.then(data => {
		console.log( JSON.parse(data) );
	})
	.catch(err => console.log('error ', err))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы