如何修复请求方法' POST' Spring Boot不支持吗?

时间:2018-05-01 00:05:31

标签: java jquery ajax spring spring-boot

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

  

Whitelabel错误页面

     

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

     

Tue May 01 05:16:48 IST 2018出现意外错误   (type = Method Not Allowed,status = 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>

1 个答案:

答案 0 :(得分:3)

为什么你同时拥有一个带有提交按钮和ajax请求的表单?赔率是表格首先被提交,这意味着请求被发送到&#34;&#34;这可以解释为什么你得到405: Request method 'POST' not supported

尝试替换

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

代表

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