웹개발 종합반 항해 8기-4

Ye Seo Lee·2022년 7월 3일
0

스파르타

목록 보기
9/10

flask 기본 서버 뼈대

  • flask : 서버 만드는 라이브러리
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
   return 'This is Home!'


@app.route('/mypage')
def mypage():
   return 'This is mypage!'

if __name__ == '__main__':
   app.run('0.0.0.0',port=5001,debug=True)

API 설계하기

포스팅API - 카드 생성 (Create)

A. 요청 정보

  • 요청 URL= /memo , 요청 방식 = POST
  • 요청 데이터 : URL(url_give), 코멘트(comment_give)

B. 서버가 제공할 기능

  • URL의 meta태그 정보를 바탕으로 제목, 설명, 이미지URL 스크래핑
  • (제목, 설명, URL, 이미지URL, 코멘트) 정보를 모두 DB에 저장

C. 응답 데이터

  • API가 정상적으로 작동하는지 클라이언트에게 알려주기 위해서 성공 메시지 보내기
  • (JSON 형식) 'result'= 'success'

리스팅API - 저장된 카드 보여주기 (Read)

A. 요청 정보

  • 요청 URL= /memo , 요청 방식 = GET
  • 요청 데이터 : 없음

B. 서버가 제공할 기능

  • DB에 저장돼있는 모든 (제목, 설명, URL, 이미지URL, 코멘트) 정보를 가져오기

C. 응답 데이터

  • 아티클(기사)들의 정보(제목, 설명, URL, 이미지URL, 코멘트) → 카드 만들어서 붙이기
  • (JSON 형식) 'articles': 아티클 정보

서버,클라이언트 만드는 순서

POST 먼저

  • 클라이언트와 서버 확인하기
  • 서버부터 만들기
    1. 클라이언트로부터 데이터를 받기.
    2. meta tag를 스크래핑하기
    3. mongoDB에 데이터를 넣기
  • 클라이언트 만들기
    1. 유저가 입력한 데이터를 #post-url과 #post-comment에서 가져오기
    2. /memo에 POST 방식으로 메모 생성 요청하기
    3. 성공 시 페이지 새로고침하기
  • 완성 확인하기

GET 나중

  • 클라이언트와 서버 확인하기
  • 서버부터 만들기
    1. mongoDB에서 _id 값을 제외한 모든 데이터 조회해오기 (Read)
    2. articles라는 키 값으로 articles 정보 보내주기
  • 클라이언트 만들기
    1. /memo에 GET 방식으로 메모 정보 요청하고 articles로 메모 정보 받기
    2. , makeCard 함수를 이용해서 카드 HTML 붙이기
  • 완성 확인하기

기본 뼈대 app.py

from flask import Flask, render_template, request, jsonify

app = Flask(__name__)


@app.route('/')
def home():
    return render_template('index.html')


@app.route('/test', methods=['GET'])
def test_get():
   title_receive = request.args.get('title_give')
   print(title_receive)
   return jsonify({'result': 'success', 'msg': '이 요청은 GET!'})

@app.route('/test', methods=['POST'])
def test_post():
   title_receive = request.form['title_give']
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 POST!'})

if __name__ == '__main__':
    app.run('0.0.0.0', port=5001, debug=True)

0개의 댓글