본문 바로가기
Framework/vue_Architecture

http통신 연습(vue)

by cariño 2023. 1. 9.
728x90
반응형

라이프 사이클 연습 아님

post, get 단순 버튼 사용 식 연습

api는 https://jsonplaceholder.typicode.com/

 

JSONPlaceholder - Free Fake REST API

{JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. As of Oct 2022, serving ~1.7 billion requests each month.

jsonplaceholder.typicode.com

 

//App.vue

<script>
import CreatePost from "./components/CreatePost.vue";
import PostList from "./components/PostList.vue";

export default {
  name: "app",
  components: { PostList, CreatePost },
};
</script>

<template>
  <div>
    <post-list />
    <create-post />
  </div>
</template>

 

 

[get]

//PostList.vue

<template>
  <div>
    <button @click="getPosts">Load Posts</button>
    <h1 v-if="errMessage">{{ errMessage }}</h1>
    <div v-for="post in posts" :key="post.id">
      {{ post.id }}
      <p>{{ post.title }}</p>
      <p>{{ post.body }}</p>
    </div>
  </div>
</template>

<script>
import axios from "axios";
export default {
  name: "post-list",
  data() {
    return {
      posts: [],
      errMessage: "",
    };
  },
  methods: {
    getPosts() {
      axios
        .get("https://jsonplaceholder.typicode.com/posts")
        .then((response) => {
          console.log(response.data);
          this.posts = response.data;
        })
        .catch((err) => {
          console.log(err);
          this.errMessage = "error data";
        });
    },
  },
};
</script>

 

 

[post]

//CreatePost.vue

<template>
  <form @submit.prevent="createPost">
    <label for="userId">userId</label>
    <input type="text" id="userId" v-model="formData.userid" />
    <br />
    <label for="title">title</label>
    <input type="text" id="title" v-model="formData.title" />
    <br />
    <label for="formBody">formBody</label>
    <input type="text" id="formBody" v-model="formData.body" />
    <button>create post</button>
  </form>
</template>

<script>
import axios from "axios";
export default {
  name: "create-post",
  data() {
    return {
      formData: {
        userid: "",
        title: "",
        body: "",
      },
    };
  },
  methods: {
    createPost() {
      axios
        .post("https://jsonplaceholder.typicode.com/posts", this.formData)
        .then((res) => {
          console.log(res);
        })
        .catch((err) => console.log(err));
    },
  },
};
</script>

 

728x90

'Framework > vue_Architecture' 카테고리의 다른 글

$ref, $refs - DOM접근(vue.js)  (0) 2023.01.10
Components_provide, inject, Dynamic component(2)  (0) 2023.01.06
Custom Event (vue.js)  (1) 2023.01.06
Components(1)  (0) 2023.01.06
Vue Router - Route, Router 차이  (0) 2023.01.05

댓글