【发布时间】:2023-03-12 18:03:01
【问题描述】:
我的 spring boot mysql 项目有问题, 控制器类仅适用于 METHOD GET(get all),但我似乎无法发布 并得到错误 405:不允许方法“POST”
这是我的控制器类:
package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.example.demo.Blog;
import com.example.demo.repository.BlogRespository;
import java.util.List;
import java.util.Map;
@RestController
public class BlogController {
@Autowired
BlogRespository blogRespository;
@GetMapping("/blog")
public List<Blog> index(){
return blogRespository.findAll();
}
@GetMapping("/blog/{id}")
public Blog show(@PathVariable String id){
int blogId = Integer.parseInt(id);
return blogRespository.findById(blogId)
.orElseThrow(() -> new IllegalArgumentException(
"The requested resultId [" + id +
"] does not exist."));
}
@PostMapping("/blog/search")
public List<Blog> search(@RequestBody Map<String, String> body){
String searchTerm = body.get("text");
return blogRespository.findByTitleContainingOrContentContaining(searchTerm, searchTerm);
}
@PostMapping("/blog")
public Blog create(@RequestBody Map<String, String> body){
String title = body.get("title");
String content = body.get("content");
return blogRespository.save(new Blog(title, content));
}
@PutMapping("/blog/{id}")
public Blog update(@PathVariable String id, @RequestBody Map<String, String> body){
int blogId = Integer.parseInt(id);
// getting blog
Blog blog = blogRespository.findById(blogId)
.orElseThrow(() -> new IllegalArgumentException(
"The requested resultId [" + id +
"] does not exist."));
blog.setTitle(body.get("title"));
blog.setContent(body.get("content"));
return blogRespository.save(blog);
}
@DeleteMapping("blog/{id}")
public boolean delete(@PathVariable String id){
int blogId = Integer.parseInt(id);
blogRespository.delete(blogId);
return true;
}
}
如果你需要,这是我的存储库类
package com.example.demo.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.example.demo.Blog;
import java.util.List;
@Repository
public interface BlogRespository extends JpaRepository<Blog, Integer> {
// custom query to search to blog post by title or content
List<Blog> findByTitleContainingOrContentContaining(String text, String textAgain);
}
我正在尝试使用 SoapUI 发出 POST 请求,但似乎找不到解决方案,非常感谢
【问题讨论】:
-
您是否在本地运行应用程序?否则这也可能与服务器限制有关。
-
您发布到哪种类型或 URL?
-
你在说
@GetMapping("/blog")吗? -
您能否使用请求的
url和您要发布的数据的 sn-p 更新问题? -
我想同时发布到 /blog 和 /blog/search,当我没有输入正确的信息(帖子中没有字符串)时,它会给出 500 错误,但是当我发送正确的帖子时说不允许 POST 方法
标签: java spring spring-boot jpa