Как отправить Json с локон? SyntaxError: неожиданный токен n в JSON в позиции 1 - PullRequest
0 голосов
/ 19 апреля 2020

У меня Node.js приложение. Когда я пытаюсь POST

curl -X POST -H "Content-Type: application/json" -d "{"name":"richard","email":"ricard@rublev.co" }" http://localhost:3000/collections/curl-test

, я получаю ошибку

<body>
<pre>SyntaxError: Unexpected token n in JSON at position 1<br> &nbsp; &nbsp;at JSON.parse (&lt;anonymous&gt;)<br> &nbsp; &nbsp;at parse (/home/miki/amardan/ch8/newrest/node_modules/body-parser/lib/types/json.js:89:19)

Если я добавлю -d -d

[1/2]: name:'richard' --> <stdout>
--_curl_--name:'richard'
curl: (3) URL using bad/illegal format or missing URL

[2/2]: email:'ricard@rublev.co' --> <stdout>
--_curl_--email:'ricard@rublev.co'
curl: (6) Could not resolve host: rublev.co'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>

Ошибка

SyntaxError: Unexpected token - in JSON at position 0
    at JSON.parse (<anonymous>)
    at createStrictSyntaxError (/home/miki/amardan/ch8/newrest/node_modules/body-parser/lib/types/json.js:158:10)
    at parse (/home/miki/amardan/ch8/newrest/node_modules/body-parser/lib/types/json.js:83:15)
    at /home/miki/amardan/ch8/newrest/node_modules/body-parser/lib/read.js:121:18
    at invokeCallback (/home/miki/amardan/ch8/newrest/node_modules/raw-body/index.js:224:16)
    at done (/home/miki/amardan/ch8/newrest/node_modules/raw-body/index.js:213:7)

Если я go для text/html, тогда я получил

[{"_id":"5e9bf713bcea0e49314ed4f7"}]

Localhost output

::ffff:127.0.0.1 - - [Sun, 19 Apr 2020 07:04:09 GMT] "POST /collections/curl-test HTTP/1.1" 200 36 "-" "curl/7.65.3"

Я на Ubuntu 18.04. Я добавлю несколько строк из моего индекса. js. Вот где запускается body-parser

const app = express()

app.use(bodyParser.json())

app.param('collectionName', (req, res, next, collectionName) => {
    req.collection = db.collection(collectionName)
    return next()
})

app.post('/collections/:collectionName', (req, res, next) => {
    // TODO: Validate req.body
    req.collection.insert(req.body, {}, (e, results) => {
      if (e) return next(e)
      res.send(results.ops)
    })
})

Как решить эту проблему?

1 Ответ

0 голосов
/ 19 апреля 2020

Это работает

 curl -X POST -H "Content-Type: application/json" -d '{"name":"richard","email":"ricard@rublev.co"}' http://localhost:3000/collections/curl-test

Вывод

[{"name":"richard","email":"ricard@rublev.co","_id":"5e9c1818ea90fe2665db90ed"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...