2015-12-09 6 views
1

Я учусь feathersjs согласно ниже ссылкеCurl команда в Windows,

http://feathersjs.com/quick-start/

мне нужно запустить следующую команду и контролировать выход на http://localhost:3000/todo

curl 'http://localhost:3000/todos/' -H 'Content-Type: application/json' --data-binary '{ "text": "Do something" }' 

Когда я попытался запустить ниже на cmd, он показывает, что «curl» не распознается в приглашении cmd.

Если я попытался запустить его с помощью git-bash.exe, bash.exe или sh.exe (в Git/bin или shell.w32-ix86), Cygwin.bat (в cygwin64), он будет работать нормально и показывая результат в браузере.

[{"text":"Do something","id":0}] 

Но если пытались запустить его, в том числе и в мой путь "C: \ Program Files \ Git \ mingw64 \ BIN, который имеет curl.exe", я буду получать ниже ошибки, но «C: \ Program Files \ Git \ USR \ Bin»будет делать только штрафом ...

локон: (1) Протокол ""HTTP" не поддерживается или отключен в Libcurl
локон: (6) не удалось решить множество 'application'
curl: (6) Не удалось разрешить текст хоста '
curl: (6) Не удалось решить хост пользователя' Do something '
завиток: (3) [подстановка] непревзойденная близко скобка/скобка в колонке 1

мне удалось устранить ошибку с ниже командами

curl "http://localhost:3000/todos/" -H "Content-Type: 'application/json'" --data-binary "{ 'text': 'Do something' }" 

Но результирующий выходной сигнал будет иметь объект Json «текст "пропавший без вести ...

[{"text":"Do something","id":0},{"id":1}] 

Вопрос:
1) После изменения команды, объект Json не успешно проанализирован. Есть ли проблема синтаксиса?
2) Если проблема с синтаксисом отсутствует, означает ли это, что завиток нужно запускать в среде Unix в соответствии с первоначальной попыткой, что он не может быть запущен непосредственно в cmd, но будет нормально работать в bash, cygwin и т. Д2?
3) В чем разница между curl.exe в C: \ Program Files \ Git \ usr \ bin и C: \ Program Files \ Git \ mingw64 \ bin, у которой есть curl.exe?

Update:

Не OK выход Raw Cap http.content_type == "" приложения/JSON" Выход

OK Raw Cap http.content_type == "приложения/JSON"

Update2:

Удаление одинарные кавычки в приложении/JSON на 2-й команды ... показывает ошибку

C:\Users\testUser>"C:\Program Files\Git\mingw64\bin\curl.exe" "http://localhost:3000/todos/" -H "Content-Type: 'application/json'" --data-binary "{ 'text': 'Do something' }" 
{"id":1} 
C:\Users\testUser>"C:\Program Files\Git\mingw64\bin\curl.exe" "http://localhost:3000/todos/" -H "Content-Type: application/json" --data-binary "{ 'text': 'Do something' }" 
SyntaxError: Unexpected token &#39;<br> &nbsp; &nbsp;at Object.parse (native)<br> &nbsp; &nbsp;at parse (C:\Users\testUser\Documents\Framework\Javascript\featherstestNewService\node_modules\body-parser\lib\types\json.js:88:17)<br> &nbsp; &nbsp;at C:\Users\testUser\Documents\Framework\Javascript\featherstestNewService\node_modules\body-parser\lib\read.js:116:18<br> &nbsp; &nbsp;at invokeCallback (C:\Users\testUser\Documents\Framework\Javascript\featherstestNewService\node_modules\body-parser\node_modules\raw-body\index.js:262:16)<br> &nbsp; &nbsp;at done (C:\Users\testUser\Documents\Framework\Javascript\featherstestNewService\node_modules\body-parser\node_modules\raw-body\index.js:251:7)<br> &nbsp; &nbsp;at IncomingMessage.onEnd (C:\Users\testUser\Documents\Framework\Javascript\featherstestNewService\node_modules\body-parser\node_modules\raw-body\index.js:308:7)<br> &nbsp; &nbsp;at emitNone (events.js:67:13)<br> &nbsp; &nbsp;at IncomingMessage.emit (events.js:166:7)<br> &nbsp; &nbsp;at endReadableNT (_stream_readable.js:905:12)<br> &nbsp; &nbsp;at doNTCallback2 (node.js:441:9) 

Update 3:

Пробовал заменить Libcurl-4.dll, используемый curl.exe. Загрузили libcurl из «http://curl.haxx.se/download.html», MingW32 с «http://sourceforge.net/projects/mingw/files/MSYS/» и добавили «C: \ MinGW \ bin» в PATH. Затем grep -rl "libcurl.dll".| xargs sed -i's/libcurl.dll/libcurl-4.dll/g 'для создания libcurl-4.dll в соответствии с предложенным «http://curl.haxx.se/mail/lib-2010-11/0174.html». Затем выполните ./buildconfig, make, make install. Затем скопировал Libcurl-4.dll в C: \ Program Files \ Git \ mingw64 \ бен папку, но результат тот же ...

Update 4

Изменение происхождения curl.exe, но до сих пор используют та же команда, показывает ошибку в версии mingw64. Я подозреваю, что завиток mingw64 требует специального выхода, чтобы заставить его работать?

C:\Users\testUser\Documents\Framework\Javascript\featherstestNewService>"C:\Program Files\Git\mingw64\bin\curl.exe" 'http://localhost:3000/todos/' -H 'Content-Type: application/json' --data-binary '{ "text": "Do something" }' 
curl: (1) Protocol "'http" not supported or disabled in libcurl 
curl: (6) Couldn't resolve host 'application' 
curl: (6) Couldn't resolve host 'text' 
curl: (6) Couldn't resolve host 'Do something' 
curl: (3) [globbing] unmatched close brace/bracket in column 1 

C:\Users\testUser\Documents\Framework\Javascript\featherstestNewService>"C:\Program Files\Git\usr\bin\curl.exe" 'http://localhost:3000/todos/' -H 'Content-Type: application/json' --data-binary '{ "text": "Do something" }' 
{"text":"Do something","id":38} 

Update 5

От руководства ... локон --manual

-d, --data <data> 
     (HTTP) Sends the specified data in a POST request to the HTTP 
     server, in the same way that a browser does when a user has 
     filled in an HTML form and presses the submit button. This will 
     cause curl to pass the data to the server using the content-type 
     application/x-www-form-urlencoded. Compare to -F, --form. 

     -d, --data is the same as --data-ascii. --data-raw is almost the 
     same but does not have a special interpretation of the @ charac- 
     ter. To post data purely binary, you should instead use the 
     --data-binary option. To URL-encode the value of a form field 
     you may use --data-urlencode. 

     If any of these options is used more than once on the same com- 
     mand line, the data pieces specified will be merged together 
     with a separating &-symbol. Thus, using '-d name=daniel -d 
     skill=lousy' would generate a post chunk that looks like 
     'name=daniel&skill=lousy'. 

     If you start the data with the letter @, the rest should be a 
     file name to read the data from, or - if you want curl to read 
     the data from stdin. Multiple files can also be specified. Post- 
     ing data from a file named 'foobar' would thus be done with 
     --data @foobar. When --data is told to read from a file like 
     that, carriage returns and newlines will be stripped out. If you 
     don't want the @ character to have a special interpretation use 
     --data-raw instead. 

Так что я попытался ...

C:\Users\testUser>"C:\Program Files\Git\mingw64\bin\curl.exe" "http://localhost:3000/todos/" -H "'Content-Type:' 'application/json'" --data-binary text=doing --data complete=false 
{"text":"doing","complete":"false","id":145} 
C:\Users\testUser>"C:\Program Files\Git\mingw64\bin\curl.exe" "http://localhost:3000/todos/" -H "'Content-Type:' 'application/json'" --data-binary text=ding 
{"text":"ding","id":146} 

Но я не могу понять, как сделать более одного слова для объекта JSON, например, вместо «делать», мне нужно «что-то делать». Кажется, что MingW64 git curl принимает разные форматы ...

ответ

2

После изменения команды curl он работает для вас, потому что вам нужно использовать двойную кавычку для системы Windows.

После изменения команды вы ошибочно добавили одиночную кавычку вокруг application/json. Вот почему, несмотря на то, что рабочий криволинейный командный сервер не был уверен в том, что вы точно отправили им!

"Content-Type: 'application/json'" 
      ^   ^notice the unwanted singles 

Так оно и должно быть

"Content-Type: application/json" 

Если вы не обеспечивают путь для любой двоичный (т.е. curl.exe, mysql.exe, php.exe и т.д.), то система ищет их внутри доступные пути в переменной PATH, и если они нашли несколько путей там, то он будет выбирать только один, и я не знаю, какой из них!

+0

Я отредактировал свое оригинальное сообщение, убедился, что бежал из mingw и удалял одну цитату ... Я не могу понять ошибку. Это то, что вы мне предлагаете? – user3663854

+0

», и если они найдут несколько путей там, то он будет выбирать только один, и я не знаю, какой из них!» - О, * Я * знаю, какой из них. Это не волшебство ;-) Подсказка: порядок записей в 'PATH' имеет значение. – Joey