【问题标题】:How to fix Request method 'POST' not supported in Spring Boot?如何修复 Spring Boot 中不支持的请求方法“POST”?
【发布时间】:2018-05-01 00:05:31
【问题描述】:

我正在使用 Spring Boot 创建 API。在这个项目中,我使用了spring web、JPA、jstl和MySql作为API的依赖。在这个项目中,我创建了一个控制器、模型和存储库。基本上,这个 API 执行 CRUD 操作。我还创建了一个使用我自己的 API 的客户端。当我使用 Postman 发布数据时,它成功地将数据插入数据库并给了我 200 OK 代码。然后我创建了网页并创建了一个 html 表单并使用 Ajax 来获取该数据。但问题是当我单击表单中的插入按钮时,它给了我这个错误。

白标错误页面

这个应用程序没有明确的 /error 映射,所以你看到 这是一个后备。

2018 年 5 月 1 日星期二 05:16:48 IST 出现意外错误 (类型=不允许的方法,状态=405)。请求方法'POST'不是 支持

我该如何解决这个问题??

我的控制器:

package com.kisalka.pacrestapi.controller;

import java.util.List;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import com.kisalka.pacrestapi.repository.ImRepository;
import com.kisalka.pacrestapi.model.ImModel;

@RestController
@RequestMapping("/api")
public class ImController {

    @Autowired
    private ImRepository TaskRepository;


    @RequestMapping(method=RequestMethod.POST, value="/tasks")
    public ImModel createNote(@RequestBody ImModel note) {
        return TaskRepository.save(note);
    }

}

我的网页:

<form class="form-horizontal" method="POST" action="">

                    <div class="form-group">
                        <label class="control-label col-md-3">Project Name</label>
                        <div class="col-md-7">
                            <input type="text" class="form-control" name="pname" id="txtPname"/>
                        </div>              
                    </div>

                    <div class="form-group">
                        <label class="control-label col-md-3">Developer Name</label>
                        <div class="col-md-7">
                            <input type="text" class="form-control" name="devname" id="txtDevname"/>
                        </div>              
                    </div>

                    <div class="form-group">
                        <input type="submit" class="btn btn-primary" value="Save" id="btnRegister"/>
                    </div>

                </form>

jQuery 和 Ajax 部分:

<script type="text/javascript">
        $(document).ready(function () {

            // Save the new user details
            $('#btnRegister').click(function () {
                $.ajax({
                    url: '/api/tasks',
                    method: 'POST',
                    data: {
                        pname: $('#txtPname').val(),
                        devname: $('#txtDevname').val()
                    },
                    success: function () {
                        alert("Inserted"); 
                    },
                    error: function (jqXHR) {
                        $('#divErrorText').text(jqXHR.responseText);
                        $('#divError').show('fade');
                    }
                });
            });
        });
    </script>

【问题讨论】:

  • 为什么你有一个带有提交按钮的表单和一个ajax请求?奇怪的是表单首先被提交,这意味着请求被发送到“”,这可以解释为什么你会得到一个405: Request method 'POST' not supported

标签: java jquery ajax spring spring-boot


【解决方案1】:

为什么你有一个带有提交按钮的表单和一个 ajax 请求?奇怪的是表单首先被提交,这意味着请求被发送到“”,这可以解释为什么你会得到一个405: Request method 'POST' not supported

尝试替换

<form class="form-horizontal" method="POST" action="">

<form class="form-horizontal" method="POST" action="/api/tasks">

【讨论】:

  • 我试过这样,现在我得到这个错误 - 出现意外错误(类型=不支持的媒体类型,状态=415)。不支持内容类型“application/x-www-form-urlencoded;charset=UTF-8”。我该如何解决这个问题??
  • @Amithash 从ImModel note 前面删除@RequestBody
  • 完美运行!! :D 谢谢.. 如果可以的话,也请帮忙 - stackoverflow.com/questions/50096376/…
  • 现在我可以使用表单插入数据了。但是,当我使用 Postman 时,没有任何东西插入数据库。我该如何解决这个问题??
  • 您需要确保在 Postman 中有一个带有键 Content-Type 和值 application/x-www-form-urlencoded 的标题行
猜你喜欢
  • 2018-06-03
  • 2020-03-31
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多