Я использую Ubuntu и установил на нем cURL. Я хочу протестировать свое приложение Spring REST с помощью cURL. Я написал свой POST-код на стороне Java. Однако я хочу проверить это с помощью cURL. Я пытаюсь опубликовать данные JSON. Пример данных выглядит так:

{"value":"30","type":"Tip 3","targetModule":"Target 3","configurationGroup":null,"name":"Configuration Deneme 3","description":null,"identity":"Configuration Deneme 3","version":0,"systemId":3,"active":true}

Я использую эту команду:

curl -i \
    -H "Accept: application/json" \
    -H "X-HTTP-Method-Override: PUT" \
    -X POST -d "value":"30","type":"Tip 3","targetModule":"Target 3","configurationGroup":null,"name":"Configuration Deneme 3","description":null,"identity":"Configuration Deneme 3","version":0,"systemId":3,"active":true \
    http://localhost:8080/xx/xxx/xxxx

Он возвращает эту ошибку:

HTTP/1.1 415 Unsupported Media Type
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 1051
Date: Wed, 24 Aug 2011 08:50:17 GMT

Описание ошибки следующее:

Сервер отклонил этот запрос, поскольку формат объекта запроса не поддерживается запрошенным ресурсом для запрошенного метода ().

Журнал Tomcat: "POST / ui / webapp / conf / clear HTTP / 1.1" 415 1051

Каков правильный формат команды cURL?

Это мой код на стороне Java PUT (я протестировал GET и DELETE, и они работают):

@RequestMapping(method = RequestMethod.PUT)
public Configuration updateConfiguration(HttpServletResponse response, @RequestBody Configuration configuration) { //consider @Valid tag
    configuration.setName("PUT worked");
    //todo If error occurs response.sendError(HttpServletResponse.SC_NOT_FOUND);
    return configuration;
}
3419
kamaci 24 Авг 2011 в 12:51
7
Проверить ссылка для запросов публикации Spring 3.2.0.
 – 
AmirHd
5 Июн 2013 в 13:41
12
Есть хороший пост Использование Curl для специального тестирования Of RESTful Microservices, в котором приводится множество примеров.
 – 
upitau
28 Авг 2016 в 14:03
1
Помогите мне с этим stackoverflow.com/questions/65359210/…
 – 
JaY KuMaR
18 Дек 2020 в 18:10

28 ответов

Лучший ответ

Вам необходимо установить тип содержимого application / json. Но -d (или --data) отправляет Content-Type application/x-www-form-urlencoded, который не поддерживается Spring.

Глядя на страницу руководства по curl, я думаю, вы можете использовать -H (или --header):

-H "Content-Type: application/json"

Полный пример:

curl --header "Content-Type: application/json" \
  --request POST \
  --data '{"username":"xyz","password":"xyz"}' \
  http://localhost:3000/api/login

(-H - это сокращение от --header, -d от --data)

Обратите внимание, что -request POST является необязательным , если вы используете -d, поскольку флаг -d подразумевает запрос POST.


В Windows дела обстоят немного иначе. См. Ветку комментариев.

5198
Gray 17 Янв 2021 в 05:25
336
Для окон одинарные кавычки вокруг json не работали, и мне пришлось избегать двойных кавычек. curl -X POST -H "Content-Type: application/json" -d "{ \"key1\": \"value1\" }" http://localhost:3000/api/method
 – 
hIpPy
11 Сен 2013 в 21:34
52
Для меня под Windows мне нужно было избегать кавычек, используя кавычки в этом формате "{ """key1""": """value1""" }". Также этот ответ: stackoverflow.com / questions / 18314796 /…
 – 
chodorowicz
27 Янв 2014 в 15:10
4
У меня были проблемы с запросами POST, но я решил их, написав «Application / json» с заглавной буквы, поэтому, если вы получите ошибку 415, проверьте использование заглавных букв.
 – 
WiteCastle
24 Апр 2014 в 22:13
3
Tuttle Почему у вашего комментария так много голосов? С curl в ubuntu 14.04 вам понадобится "Content-Type: application/json", а не только "application/json". Это отняло у меня много времени ...
 – 
ostrokach
19 Окт 2015 в 02:30
8
Извините, что потратил зря ваше время. синтаксис отлично работал у меня на OSX, когда я его опубликовал (не пытался). Думаю, это просто разница в платформе. Я полагаю, что люди, которые помогли, получили положительные отзывы.
 – 
Adam Tuttle
1 Ноя 2015 в 04:23

Для Windows использование одинарных кавычек для значения -d у меня не сработало, но сработало после перехода на двойные кавычки. Также мне нужно было избегать двойных кавычек внутри фигурных скобок.

То есть не сработало следующее:

curl -i -X POST -H "Content-Type: application/json" -d '{"key":"val"}' http://localhost:8080/appname/path

Но сработало следующее:

curl -i -X POST -H "Content-Type: application/json" -d "{\"key\":\"val\"}" http://localhost:8080/appname/path
130
Peter Mortensen 28 Май 2017 в 00:51
6
К вашему сведению - похоже, вам не хватает закрывающей двойной кавычки вокруг тела json
 – 
acanby
15 Мар 2016 в 02:10
4
Для меня в Windows "вокруг данных" не работает, вместо этого не работают кавычки.
 – 
rodedo
17 Окт 2016 в 12:44
3
Если вы используете PowerShell, см. этот ответ.
 – 
rsenna
28 Фев 2018 в 22:02
1
Для улучшения обработки цитат и по многим другим причинам прекратите использовать старый / weak cmd.exe и попробуйте одну из улучшенных оболочек, например Git-Bash, из gitforwindows.org. (Настоятельно рекомендуется, даже если вы не используете Git.)
 – 
MarkHu
18 Дек 2020 в 21:35

Вы можете найти рести полезным: https://github.com/micha/resty

Это оболочка для CURL, которая упрощает запросы REST в командной строке. Вы указываете его на свою конечную точку API, и он дает вам команды PUT и POST. (Примеры адаптированы с домашней страницы)

$ resty http://127.0.0.1:8080/data #Sets up resty to point at your endpoing
$ GET /blogs.json                  #Gets http://127.0.0.1:8080/data/blogs.json
                                   #Put JSON
$ PUT /blogs/2.json '{"id" : 2, "title" : "updated post", "body" : "This is the new."}'
                                   # POST JSON from a file
$ POST /blogs/5.json < /tmp/blog.json

Кроме того, часто по-прежнему необходимо добавлять заголовки Content Type. Однако вы можете сделать это один раз, чтобы установить значение по умолчанию для добавления файлов конфигурации для каждого метода для каждого сайта: Установка параметров RESTY по умолчанию

114
mo-seph 8 Фев 2013 в 18:34

Это сработало для меня, используя:

curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"id":100}' http://localhost/api/postJsonReader.do

Он был успешно сопоставлен с контроллером Spring:

@RequestMapping(value = "/postJsonReader", method = RequestMethod.POST)
public @ResponseBody String processPostJsonData(@RequestBody IdOnly idOnly) throws Exception {
        logger.debug("JsonReaderController hit! Reading JSON data!"+idOnly.getId());
        return "JSON Received";
}

IdOnly - это простой POJO со свойством id.

104
Peter Mortensen 28 Май 2017 в 00:47

Я просто сталкиваюсь с той же проблемой. Я мог бы решить эту проблему, указав

-H "Content-Type: application/json; charset=UTF-8"
47
Steffen Roller 15 Ноя 2011 в 19:45

У меня это сработало.

curl -X POST --data @json_out.txt http://localhost:8080/

Где,

-X Означает http-глагол.

--data Означает данные, которые вы хотите отправить.

41
Felipe Pereira 1 Июл 2015 в 17:31
9
-X POST в этом примере является избыточным.
 – 
Software Engineer
22 Янв 2018 в 19:05
2
Но, по крайней мере, для начинающих это поучительно.
 – 
Felipe Pereira
2 Дек 2020 в 20:54
2
Лучше иметь прозрачный, но избыточный код, чем непрозрачный. Я также предпочитаю --data вместо -d. Это зависит от того, насколько хороша команда с Bash в целом, но определенно проще для новичков в Bash и людей, которые не используют его ежедневно.
 – 
Vadorequest
23 Дек 2020 в 19:17

Вы можете использовать почтальон для преобразования в CURL введите описание изображения здесь

enter image description here

Заметка:

В последней версии Postman есть несколько обновлений пользовательского интерфейса, и теперь ссылка на код доступна на боковой панели.

enter image description here

54
Amit Meena 17 Ноя 2021 в 10:48
Лучший ответ, сэкономил много времени, спасибо :)
 – 
Amit Meena
16 Ноя 2021 в 13:49

Вы можете использовать Postman с его интуитивно понятным графическим интерфейсом для сборки своей команды cURL. .

  1. Установите и запустите Postman
  2. Введите свой URL, текст сообщения, заголовки запроса и т. Д. Стр.
  3. Нажмите Code
  4. В раскрывающемся списке выберите cURL.
  5. скопируйте и вставьте команду cURL

Примечание. В раскрывающемся списке есть несколько вариантов автоматической генерации запросов, поэтому я подумал, что моя публикация вообще необходима.

39
kiltek 25 Сен 2017 в 15:47
9
Не понимал, что эта функция была включена в Почтальон. Спасибо, что указали на это!
 – 
ariestav
5 Мар 2019 в 19:31

Используя CURL Windows, попробуйте следующее:

curl -X POST -H "Content-Type:application/json" -d "{\"firstName\": \"blablabla\",\"lastName\": \"dummy\",\"id\": \"123456\"}" http-host/_ah/api/employeeendpoint/v1/employee
32
NorthCat 12 Мар 2015 в 14:37

HTTPie - это рекомендуемая альтернатива curl, потому что вы можете просто

$ http POST http://example.com/some/endpoint name=value name1=value1

По умолчанию он говорит в формате JSON и будет обрабатывать как установку необходимого заголовка, так и кодирование данных как действительного JSON. Есть также:

Some-Header:value

Для заголовков, а также

name==value

Для параметров строки запроса. Если у вас большой кусок данных, вы также можете прочитать его из файла, если он будет закодирован в JSON:

 field=@file.txt
32
Mark Stosberg 23 Авг 2018 в 17:13

Если вы тестируете множество отправок / ответов JSON в интерфейсе RESTful, вы можете проверить Postman для Chrome (который позволяет вручную определять тесты веб-служб) и его Newman, сопутствующий командной строке (который позволяет автоматизировать тесты по" коллекциям "тестов Postman). И бесплатно, и открыто!

24
törzsmókus 15 Фев 2017 в 00:40

Это сработало для меня, дополнительно используя аутентификацию BASIC:

curl -v --proxy '' --basic -u Administrator:password -X POST -H "Content-Type: application/json"
        --data-binary '{"value":"30","type":"Tip 3","targetModule":"Target 3","configurationGroup":null,"name":"Configuration Deneme 3","description":null,"identity":"Configuration Deneme 3","version":0,"systemId":3,"active":true}'
        http://httpbin.org/post

Конечно, вы никогда не должны использовать BASIC-аутентификацию без SSL и проверенного сертификата.

Сегодня я снова столкнулся с этим, используя Cygwin cURL 7.49.1 для Windows ... И при использовании --data или --data-binary с аргументом JSON cURL запутался и интерпретировал {} в JSON в качестве шаблона URL. Это исправлено добавлением аргумента -g для отключения подстановки cURL.

См. Также Передача URL-адреса со скобками для скручивания .

24
Peter Mortensen 28 Май 2017 в 00:49

Вы также можете поместить содержимое JSON в файл и передать его в curl с помощью параметра --upload-file через стандартный ввод, например:

 echo 'my.awesome.json.function({"do" : "whatever"})' | curl -X POST "http://url" -T -
21
Paul Tobias 29 Окт 2020 в 16:26

Это сработало для меня:

curl -H "Content-Type: application/json" -X POST -d @./my_json_body.txt http://192.168.1.1/json
17
Misa Lazovic 16 Окт 2016 в 19:39

Я знаю, что на этот вопрос было дано много ответов, но я хотел бы рассказать, где у меня возникла проблема:

curl -X POST http: // your-server-end-point -H "Content-Type: application / json " -d @ путь-из-вашего-json-файла.json

Видите, я все сделал правильно, Только одно - "@" я пропустил перед путем к файлу JSON.

Я нашел один подходящий документ в Интернете - https://gist.github.com/subfuzion/08c5d85437d5d4f00e58 < / а>

Надеюсь, это поможет немногим. Благодарность

17
Indrajeet Gour 28 Апр 2020 в 17:14

Вот еще один способ сделать это, если у вас есть динамические данные, которые нужно включить.

#!/bin/bash

version=$1
text=$2
branch=$(git rev-parse --abbrev-ref HEAD)
repo_full_name=$(git config --get remote.origin.url | sed 's/.*:\/\/github.com\///;s/.git$//')
token=$(git config --global github.token)

generate_post_data()
{
  cat <<EOF
{
  "tag_name": "$version",
  "target_commitish": "$branch",
  "name": "$version",
  "body": "$text",
  "draft": false,
  "prerelease": false
}
EOF
}

echo "Create release $version for repo: $repo_full_name branch: $branch"
curl --data "$(generate_post_data)" "https://api.github.com/repos/$repo_full_name/releases?access_token=$token"
15
Anand Rockzz 6 Авг 2019 в 09:02

Я использую формат ниже для тестирования с веб-сервером.

use -F 'json data'

Предположим, этот формат JSON dict:

{
    'comment': {
        'who':'some_one',
        'desc' : 'get it'
    }
}

Полный пример

curl -XPOST your_address/api -F comment='{"who":"some_one", "desc":"get it"}'
13
Peter Mortensen 28 Май 2017 в 00:50
1
Я не понимаю, как это могло быть универсальным ответом. Ваш сервер может быть настроен для обработки этого странного формата, но YMMV.
 – 
MarkHu
18 Дек 2020 в 22:16

Используйте параметр -d, чтобы добавить полезную нагрузку

curl -X POST \
http://<host>:<port>/<path> \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"foo": "bar",
"lorem": "ipsum"
}'

К тому же:

Используйте -X POST, чтобы использовать метод POST

Используйте -H 'Accept: application / json', чтобы добавить заголовок типа принятия

Используйте -H 'Content-Type: application / json', чтобы добавить заголовок типа содержимого

13
Sma Ma 13 Апр 2019 в 23:06
1
Я пытался использовать его, но получаю {"error": ["no data provided"]} ошибка.
 – 
Suresh
1 Июн 2020 в 17:16
1
Попробуйте переключатель curl -v, чтобы получить более подробную информацию. Служба, к которой вы обращаетесь, может обрабатывать только определенные значения типа содержимого.
 – 
MarkHu
18 Дек 2020 в 21:32

Это сработало для меня в Windows10

curl -d "{"""owner""":"""sasdasdasdasd"""}" -H "Content-Type: application/json" -X  PUT http://localhost:8080/api/changeowner/CAR4
11
Cindy Meister 23 Сен 2019 в 17:37

Я сделал для этого инструмент под названием сборщик. Он может отправлять запросы и форматировать фрагменты curl:

Вот пример:

enter image description here

Пример вывода:

curl -XGET -H "Accept: application/json" -d "{\"value\":\"30\",\"type\":\"Tip 3\",\"targetModule\":\"Target 3\",\"configurationGroup\":null,\"name\":\"Configuration Deneme 3\",\"description\":null,\"identity\":\"Configuration Deneme 3\",\"version\":0,\"systemId\":3,\"active\":true}" "http://localhost:8080/xx/xxx/xxxx"
9
Pranay Kumar 14 Май 2021 в 17:46
3
Пожелание / совет: URL-ссылки должны быть четко прописаны. (Не просто загадочное «щелкни сюда».) Специально для саморекламы своего самодельного инструмента.
 – 
MarkHu
18 Дек 2020 в 21:29

Если вы настроите SWAGGER для приложения весенней загрузки и вызовете любой API из своего приложения, вы также увидите этот запрос CURL.

Я думаю, что это простой способ генерации запросов через CURL.

4
AnilkumarReddy 28 Ноя 2019 в 15:06

На основании ответа https://stackoverflow.com/a/57369772/2391795, вот что я сделал с этим на GitHub Действия. Это было немного сложно из-за тега EOF.

Моей целью было отправить HTTP-вызов после завершения развертывания Vercel (аналогично веб-перехватчику).

Надеясь на это реальный пример может помочь другим людям.

  send-webhook-callback-once-deployment-ready:
    name: Invoke webhook callback url defined by the customer (Ubuntu 18.04)
    runs-on: ubuntu-18.04
    needs: await-for-vercel-deployment
    steps:
      - uses: actions/checkout@v1 # Get last commit pushed - See https://github.com/actions/checkout
      - name: Expose GitHub slug/short variables # See https://github.com/rlespinasse/github-slug-action#exposed-github-environment-variables
        uses: rlespinasse/github-slug-action@v3.x # See https://github.com/rlespinasse/github-slug-action
      - name: Expose git environment variables and call webhook (if provided)
        # Workflow overview:
        #  - Resolves webhook url from customer config file
        #  - If a webhook url was defined, send a
        run: |
          MANUAL_TRIGGER_CUSTOMER="${{ github.event.inputs.customer}}"
          CUSTOMER_REF_TO_DEPLOY="${MANUAL_TRIGGER_CUSTOMER:-$(cat vercel.json | jq --raw-output '.build.env.NEXT_PUBLIC_CUSTOMER_REF')}"

          VERCEL_DEPLOYMENT_COMPLETED_WEBHOOK=$(cat vercel.$CUSTOMER_REF_TO_DEPLOY.staging.json | jq --raw-output '.build.env.VERCEL_DEPLOYMENT_COMPLETED_WEBHOOK')

          # Checking if a webhook url is defined
          if [ -n "$VERCEL_DEPLOYMENT_COMPLETED_WEBHOOK" ]; then
            # Run script that populates git-related variables as ENV variables
            echo "Running script populate-git-env.sh"
            . ./scripts/populate-git-env.sh

            echo "Resolved git variables:"
            echo "'GIT_COMMIT_SHA': $GIT_COMMIT_SHA"
            echo "'GIT_COMMIT_REF': $GIT_COMMIT_REF"
            echo "'GIT_COMMIT_TAGS': $GIT_COMMIT_TAGS"

            # Generates JSON using a bash function - See https://stackoverflow.com/a/57369772/2391795
            # "End Of File" must be at the beginning of the line with no space/tab before or after - See https://stackoverflow.com/a/12909284/2391795
            # But, when executed by GitHub Action, it must be inside the "run" section instead
            generate_post_data() {
              cat <<EOF
            {
              "MANUAL_TRIGGER_CUSTOMER": "${MANUAL_TRIGGER_CUSTOMER}",
              "CUSTOMER_REF": "${CUSTOMER_REF_TO_DEPLOY}",
              "STAGE": "staging",
              "GIT_COMMIT_SHA": "${GIT_COMMIT_SHA}",
              "GIT_COMMIT_REF": "${GIT_COMMIT_REF}",
              "GIT_COMMIT_TAGS": "${GIT_COMMIT_TAGS}",
              "GITHUB_REF_SLUG": "${GITHUB_REF_SLUG}",
              "GITHUB_HEAD_REF_SLUG": "${GITHUB_HEAD_REF_SLUG}",
              "GITHUB_BASE_REF_SLUG": "${GITHUB_BASE_REF_SLUG}",
              "GITHUB_EVENT_REF_SLUG": "${GITHUB_EVENT_REF_SLUG}",
              "GITHUB_REPOSITORY_SLUG": "${GITHUB_REPOSITORY_SLUG}",
              "GITHUB_REF_SLUG_URL": "${GITHUB_REF_SLUG_URL}",
              "GITHUB_HEAD_REF_SLUG_URL": "${GITHUB_HEAD_REF_SLUG_URL}",
              "GITHUB_BASE_REF_SLUG_URL": "${GITHUB_BASE_REF_SLUG_URL}",
              "GITHUB_EVENT_REF_SLUG_URL": "${GITHUB_EVENT_REF_SLUG_URL}",
              "GITHUB_REPOSITORY_SLUG_URL": "${GITHUB_REPOSITORY_SLUG_URL}",
              "GITHUB_SHA_SHORT": "${GITHUB_SHA_SHORT}"
            }
          EOF
            }

            echo "Print generate_post_data():"
            echo "$(generate_post_data)"

            echo "Calling webhook at '$VERCEL_DEPLOYMENT_COMPLETED_WEBHOOK'"
            echo "Sending HTTP request (curl):"
            curl POST \
              "$VERCEL_DEPLOYMENT_COMPLETED_WEBHOOK" \
              -vs \
              --header "Accept: application/json" \
              --header "Content-type: application/json" \
              --data "$(generate_post_data)" \
              2>&1 | sed '/^* /d; /bytes data]$/d; s/> //; s/< //'

            # XXX See https://stackoverflow.com/a/54225157/2391795
            # -vs - add headers (-v) but remove progress bar (-s)
            # 2>&1 - combine stdout and stderr into single stdout
            # sed - edit response produced by curl using the commands below
            #   /^* /d - remove lines starting with '* ' (technical info)
            #   /bytes data]$/d - remove lines ending with 'bytes data]' (technical info)
            #   s/> // - remove '> ' prefix
            #   s/< // - remove '< ' prefix

          else
            echo "No webhook url defined in 'vercel.$CUSTOMER_REF_TO_DEPLOY.staging.json:.build.env.VERCEL_DEPLOYMENT_COMPLETED_WEBHOOK' (found '$VERCEL_DEPLOYMENT_COMPLETED_WEBHOOK')"
          fi
1
Vadorequest 30 Дек 2020 в 18:00

Вы можете передать расширение нужного формата в конце URL-адреса. например http: // localhost: 8080 / xx / xxx / xxxx .json < / сильный>

Или

http: // localhost: 8080 / xx / xxx / xxxx .xml

Примечание: вам нужно добавить зависимости jackson и jaxb maven в ваш pom.

-8
Saurabh Oza 16 Июл 2018 в 12:57
5
Это будет работать только в том случае, если серверная сторона принимает URL-адреса с этими расширениями.
 – 
Mark Stosberg
23 Авг 2018 в 17:01

Попробуйте поместить свои данные в файл, скажем body.json, а затем используйте

curl -H "Content-Type: application/json" --data @body.json http://localhost:8080/ui/webapp/conf
675
Typisch 24 Авг 2011 в 14:04
26
Вероятно, вам следует использовать параметр --data-binary вместо --data. Можно было бы ожидать, что клиент отправляет данные как есть, но --data удаляет CR и LF из ввода.
 – 
h2stein
24 Мар 2014 в 12:22
22
Использование cUrl со встроенными строками json кажется кошмаром. Необходимо убрать символ двойной кавычки. Работать с таким файлом лучше.
 – 
Xtreme Biker
26 Июн 2014 в 14:26
59
Важно добавить символ @ перед именем файла, иначе это не сработает. Я всего 20 минут бился головой об этом дерьме ...
 – 
Radu Murzea
18 Авг 2015 в 14:41
4
Таким образом, вы также можете запустить линт JSON для файла, чтобы увидеть, есть ли ошибка при синтаксическом анализе JSON.
 – 
datashaman
7 Дек 2016 в 15:37
9
В Windows необходимо заключить имя файла в двойные кавычки "@ body.json".
 – 
Stomf
26 Июн 2017 в 12:28
  • -H, чтобы отправить что-то вроде типа содержимого или токена аутентификации в заголовке
  • -d поместите сюда свои данные
  • наконец добавить ссылку на сайт

Примечание: не забудьте добавить токен аутентификации (если он есть) для учетных данных аутентификации

curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Token 2de403987713595a7955a9b4655b9e206d4294b3' -d '{"title":"Post test with curl", "body": "test body"}' http://127.0.0.1:8000/api/v1/feeds/

0
omar ahmed 31 Окт 2021 в 08:37

Для PowerShell я использовал:

curl.exe -H "Content-Type: application/json" --data "@content.json" http://localhost:8080/appname/path

Где content.json - это имя json-файла на моем локальном компьютере, содержащего запрос, и curl.exe вместо просто curl, чтобы не использовать псевдоним для Invoke-WebRequest.

6
meJustAndrew 6 Авг 2021 в 12:16

В качестве примера создайте файл JSON params.json и добавьте в него следующее содержимое:

[
    {
        "environment": "Devel",
        "description": "Machine for test, please do not delete!"
    }
]

Затем вы запускаете эту команду:

curl -v -H "Content-Type: application/json" -X POST --data @params.json -u your_username:your_password http://localhost:8000/env/add_server
60
Software Engineer 22 Янв 2018 в 19:05
Совет от профессионала: добавьте эту строку в свой ~/.curlrc файл: --header Content-Type:Application/JSON
 – 
MarkHu
18 Дек 2020 в 22:15

ВЫПУСК ЗДЕСЬ

HTTP/1.1 415 Unsupported Media Type

Вход на сервер не может интерпретировать тип носителя этого запроса, поэтому он анализирует его как text / html

Тип мультимедиа любого ресурса объявлен в свойстве Content-Type заголовка запроса.

Заголовок "accept" ... приведет к ошибке этого запроса, поэтому для отправки любого запроса JSON требуется следующее, то есть тип содержимого

-H 'content-type: application/json'

Предположим, что данные и URL-адрес выглядят примерно так

{"email": "admin@admin.com", "password": "123456"}

http: // локальный: 5000 / api / логин

Затем в LINUX

curl  http://localhost:5000/api/login  -H 'content-type: application/json'  -d '{"email": "user@admin.com", "password": "123456"}'

В WINDOWS (одинарные кавычки вокруг параметров не работают)

curl  http://localhost:5000/api/login  -H "content-type: application/json"  -d "{\"email\": \"user@admin.com\", \"password\": \"123456\"}"

-X Ключ POST не требуется, если в команде присутствует -d {.....}

Для запроса Put

-X PUT 
1
ajay_fuel_stock_lamp_stack 28 Ноя 2021 в 12:57