Я пытаюсь авторизоваться в PostMan, но он дает мне «Метод запроса« GET »не поддерживается» - PullRequest
1 голос
/ 28 марта 2020

Сначала я пытаюсь просто вывести даты из метода POST в '/ login', потому что я не уверен в правильности моего кода. Я надеюсь, что вы мне поможете, спасибо.

MainController. java

@RestController
public class MainController {
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String login(@RequestBody Credentials credentials) {
        return "username: " + credentials.getUsername() + " password: " + credentials.getPassword();
    }
}

Запрос PostMan

[![Postman dropdown list][1]][1]

[Screenshot link, if there is no picture above][1]

{
    "username": "admin",
    "password": "admin"
}

Я пытался отправить даты в виде строки (JSON) и в виде формы, но в любом случае это дает мне эту ошибку

{
    "timestamp": "2020-03-29T10:03:20.711+0000",
    "status": 405,
    "error": "Method Not Allowed",
    "message": "Request method 'GET' not supported",
    "path": "/login"
}

Я замечаю, что в компиляторе выдает мне эту ошибку "org.springframework.security.web.firewall.RequestRejectedException: запрос был отклонен, так как URL содержал потенциально вредоносную строку"; "" , после этого я получил "Метод запроса 'GET' не поддерживается"

Ответы [ 6 ]

1 голос
/ 28 марта 2020

Как уже упоминалось в ответах, выбор метода POST из выпадающего списка в Postman поможет со следующей ошибкой:

"Request method 'GET' not supported."

Тогда вы столкнетесь с ошибкой ниже:

{
    "timestamp": "2020-03-28T16:54:55.288+0000",
    "status": 400,
    "error": "Bad Request",
    "message": "Required request body is missing: public java.lang.String com.example.demo.controller.MainController.login(java.lang.String,java.lang.String)",
    "path": "/login"
}

Чтобы решить эту проблему, вы должны немного изменить конечную точку:

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MainController {

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String login(@RequestBody Credentials credentials) {
        return "username: " + credentials.getUsername() + " password: " + credentials.getPassword();
    }
}
public class Credentials {

    private String username;
    private String password;

    private Credentials() {
    }

    // getters and setters omitted, make sure you have them.
}
  • @RequestBody аннотация ожидает десериализации объекта JSON. Для отображения необходимо иметь объект, доступный для отображения.
  • Поскольку вы используете аннотацию @RestController, нет необходимости в @ResponseBody над методом. Это уже включено .
0 голосов
/ 30 марта 2020

try @RequestBody (обязательно = false) или указанное тело запроса x- www-form-urlencoded

0 голосов
/ 29 марта 2020

По некоторым причинам перед MainController должен быть "@RequestMapping ()", он работает для меня

0 голосов
/ 28 марта 2020

Попробуйте тело запроса x- www-form-urlencoded

0 голосов
/ 28 марта 2020

Можете ли вы предоставить скриншот почтальона? потому что я думаю, что вы не выбрали «POST» из выпадающего списка рядом с URL. по умолчанию GET

0 голосов
/ 28 марта 2020

Вы должны выбрать метод "POST" из раскрывающегося списка МЕТОД:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...