-
[๊ฐ์] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ 4์ฃผ์ฐจSPRING/SPARTA 2021. 8. 6. 04:27
Flask๋ผ๋ ํจํค์ง๋ฅผ ๋ค์ด๋ฐ๊ณ ์์ํจ.
ํ์ด์ฌ์ ์ด์ฉํด์ API๋ฅผ ๋ง๋ค ์ ์๋๋ก ํด์ฃผ๋ ํจํค์ง์ธ๋ฏ
๋๋ฌด๋๋ฌด ๋ฐ๋ณต์ค์ด์ง๋ง
๋ฐ์ดํฐ ์ ๋ฌ ํ๋ GET๊ณผ POST์ ์ฐจ์ด -> ์ฟผ๋ฆฌ๋ก, ๋ฐ์ดํฐ ์กฐํ vs key:valueํํ๋ก, ์์ฑ, ๋ณ๊ฒฝ, ์ญ์
meta tag :
htmlํ์ผ head์์ ๋ค์ด์์
์นด์นด์คํก ๊ณต์ ๋ฑ์ ๊ฐ๋ตํ ํด์ ์์์ ๋ณด์ด๊ฒ ๊ณต์ ๋ ์ ์๋๋ก ์ ์ด๋์
๋ผ์ ๋์ค ์ด๊ฑฐ ์ฌ๋ฐ์ผ๋ ํ๋ฒ์ฉ ๋ณด์ธ์ <๋ชจ๋์ ์ฑ ๋ฆฌ๋ทฐ>
์ ๋ชฉ ์ ์ ๋ฆฌ๋ทฐ ๋ฐ์์ POST๋ก ๋ณด๋ธ๋ค. (html)
POST๋ก ๋ฐ์ ๊ฐ์ ๋ฐ์ดํฐ ํ์์ผ๋ก ๋ง๋ค์ด db์ ์ ์ฅํ๋ค.(py)
์ง๊ธ๊น์ง ์ ์ฅํ ๋ชจ๋ ๋ฐ์ดํฐ๋ค์ GET์ผ๋ก ์กฐํํ์ฌ ์น ํ์ด์ง์ ๋ณด์ด๊ฒํ๋ค.
db์ ์ ์ฅ๋ ๋ชจ๋ ๊ฐ์ list๋ก ๋ฐ์์ GET์ผ๋ก ์ ๋ฌํ๋ค.(py)
๋ฐ์์ ๊ทธ ๋ฐ์ดํฐ์ ์๋ ๊ฐ๋ค์ ํ๋ ํ๋ ๊บผ๋ด ํ์์ ๋ง์ถฐ ๋ถ์ฌ์ค๋ค.(html)
์ด๊ฑธ ์น ํ์ด์ง ๋ก๋ฉ ๋๋ง๋ค ํ๋ค.
<๋ํ๋ก ๋ฉ๋ชจ์ฅ>
๋ค์ด๋ฒ ์ํ ์ฌ์ดํธ url๊ณผ ์ฝ๋ฉํธ๋ฅผ ์ ๋ ฅ๋ฐ์ POST๋ก ๋ณด๋ธ๋ค. (html)
POST๋ก ๊ฐ์ ๋ฐ๊ณ , ๋ฐ์ url์ ํฌ๋กค๋งํ์ฌ ๋ฐ์ดํฐ ํ์์ผ๋ก ๋ง๋ค์ด db์ ์ ์ฅํ๋ค.(py)
์ง๊ธ๊น์ง ์ ์ฅํ ๋ชจ๋ ๋ฐ์ดํฐ๋ค์ GET์ผ๋ก ์กฐํํ์ฌ ์น ํ์ด์ง์ ๋ณด์ด๊ฒํ๋ค.
db์ ์ ์ฅ๋ ๋ชจ๋ ๊ฐ์ list๋ก ๋ฐ์์ GET์ผ๋ก ์ ๋ฌํ๋ค.(py)
๋ฐ์์ ๊ทธ ๋ฐ์ดํฐ์ ์๋ ๊ฐ๋ค์ ํ๋ ํ๋ ๊บผ๋ด ์นด๋ ๊ฐ์ผ๋ก ๋ฃ๊ณ ๋ถ์ฌ์ค๋ค.(html)
์ด๊ฑธ ์น ํ์ด์ง ๋ก๋ฉ ๋๋ง๋ค ํ๋ค.
์ด๋ ๊ฒ ์ ๋ ฅํ ๊ฒ๋ง๋ค ๋ถ๋๋ค.
์ ๋ฒ์ ํ๋ ๊ทธ ์ง ๋ง์ ๊ทธ๊ฑฐ ๋ฐ์ ์ํจ ๊ฒ
์ฝ๊ฐ ์ด์ ํฌ๋กค๋ง + ์ด๋ฒ ์๋ฒ๊น์ง ํฉ์ณ์ง ์ฝ๋์๊ธฐ์ ์ฒจ๋ถํด๋ณธ๋ค.
$(document).ready(function () { showArticles(); }); function postArticle() { let url = $('#post-url').val() let comment = $('#post-comment').val() $.ajax({ type: "POST", url: "/memo", data: {url_give : url, comment_give : comment}, success: function (response) { // ์ฑ๊ณตํ๋ฉด alert(response["msg"]); window.location.reload() } }) } function showArticles() { $.ajax({ type: "GET", url: "/memo", data: {}, success: function (response) { let articles = response['all_articles'] for(let i = 0 ; i < articles.length ; i++){ let title = articles[i]['title'] let image = articles[i]['image'] let url = articles[i]['url'] let desc = articles[i]['desc'] let comment = articles[i]['comment'] let temp_html = `<div class="card"> <img class="card-img-top" src="${image}" alt="Card image cap"> <div class="card-body"> <a target="_blank" href="${url}" class="card-title">${title}</a> <p class="card-text">${desc}</p> <p class="card-text comment">${comment}</p> </div> </div>` $('#cards-box').append(temp_html) } } }) }
@app.route('/memo', methods=['GET']) def listing(): articles = list(db.articles.find({}, {'_id' : False})) return jsonify({'all_articles': articles}) ## API ์ญํ ์ ํ๋ ๋ถ๋ถ @app.route('/memo', methods=['POST']) def saving(): comment_receive = request.form['comment_give'] url_receive = request.form['url_give'] headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'} data = requests.get(url_receive, headers=headers) soup = BeautifulSoup(data.text, 'html.parser') title = soup.select_one('meta[property="og:title"]')['content'] image = soup.select_one('meta[property="og:image"]')['content'] desc = soup.select_one('meta[property="og:description"]')['content'] doc = { 'title' : title, 'image' : image, 'desc' : desc, 'url': url_receive, 'comment': comment_receive } db.articles.insert_one(doc) return jsonify({'msg':'์ ์ฅ์ด ์๋ฃ๋์์ต๋๋ค.'})
DB์ ๋ชจ์ต
<๊ณผ์ : ๋ ์์ด>
์์ ๋ฐฉ๋ฒ์ ๊ฐ์๋ฐ.
'SPRING > SPARTA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฐ์] ์น๊ฐ๋ฐ์ ๋ด, Spring 1~2์ฃผ์ฐจ (0) 2021.08.14 [๊ฐ์] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ 5์ฃผ์ฐจ (0) 2021.08.08 [๊ฐ์] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ 3์ฃผ์ฐจ (2) 2021.08.05 [๊ฐ์] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ 2์ฃผ์ฐจ (2) 2021.07.25 [๊ฐ์] ์น๊ฐ๋ฐ ์ข ํฉ๋ฐ 1์ฃผ์ฐจ (2) 2021.07.24