2024年6月4日第六十二篇

今天遇到了网络请求的问题因为我要发送一个多参数的post请求,发现不能使用@requestmapping,

于是我改为使用@PostMapping但是其中不包含参数@Requestparam只包含@RequestBody

导致问题迟迟无法解决,

最后我改为使用get请求,用@GetMapping用@RequestParam实现参数传递。

<template>
  <div>
    <h1>文章</h1>

    <ul id="articles">
      <li v-for="article in articles" :key="article.id">
        {{ article.title }} - {{ article.content }}
        <button @click="deleteArticle(article.id)">删除</button>
        <button @click="editArticle(article)">编辑</button>
      </li>
    </ul>

    <form @submit.prevent="createArticle">
      <input type="text" v-model="newArticle.title" placeholder="标题">
      <textarea v-model="newArticle.content" placeholder="内容"></textarea>
      <button type="submit">创建</button>
    </form>

    <form v-if="editArticleId" @submit.prevent="updateArticle">
      <input type="text" v-model="editArticle.title" placeholder="标题">
      <textarea v-model="editArticle.content" placeholder="内容"></textarea>
      <button type="submit">更新</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      articles: [],
      newArticle: {
        title: '',
        content: ''
      },
      editArticleId: null,
      editArticle: null
    }
  },
  mounted() {
    this.getArticles();
  },
  methods: {
    getArticles() {
      axios.get('/api/articles')
        .then(response => {
          this.articles = response.data;
        })
        .catch(error => {
          console.error(error);
        });
    },
    createArticle() {
      axios.post('/api/articles', this.newArticle)
        .then(response => {
          this.articles.push(response.data);
          this.newArticle = { title: '', content: '' };
        })
        .catch(error => {
          console.error(error);
        });
    },
    deleteArticle(id) {
      axios.delete(`/api/articles/${id}`)
        .then(response => {
          this.articles = this.articles.filter(article => article.id !== id);
        })
        .catch(error => {
          console.error(error);
        });
    },
    editArticle(article) {
      this.editArticleId = article.id;
      this.editArticle = article;
    },
    updateArticle() {
      axios.put(`/api/articles/${this.editArticleId}`, this.editArticle)
        .then(response => {
          this.articles = this.articles.map(article => {
            if (article.id === this.editArticleId) {
              return response.data;
            } else {
              return article;
            }
          });
          this.editArticleId = null;
          this.editArticle = null;
        })
        .catch(error => {
          console.error(error);
        });
    }
  }
};
</script>

 

@RestController
@RequestMapping("/api/articles")
public class ArticleController {

  @Autowired
  private ArticleRepository articleRepository;

  @GetMapping
  public List<Article> getAllArticles() {
    return articleRepository.findAll();
  }

  @GetMapping("/{id}")
  public Article getArticleById(@PathVariable Long id) {
    return articleRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("Article not found: " + id));
  }

  @PostMapping
  public Article createArticle(@RequestBody Article article) {
    return articleRepository.save(article);
  }

  @PutMapping("/{id}")
  public Article updateArticle(@PathVariable Long id, @RequestBody Article article) {
    article.setId(id);
    return articleRepository.save(article);
  }

  @DeleteMapping("/{id}")
  public void deleteArticle(@PathVariable Long id) {

 

posted @ 2024-06-04 18:34  石铁生  阅读(4)  评论(0编辑  收藏  举报