스파르타코딩클럽 4주차 개발일지

스파르타코딩클럽 4주차 개발일지

■공부전

공부하다가 점차 지식이 쌓이고 구글링도 잘하게 되었다. 그렇지만 지나간 공부에서 이걸 언제 사용했더라는 생각이 들었고 다시 복습하는 기회가 생겼다. 그래서 이번 4주차 공부할 때는 코드 한줄 한줄 이해하려고 애썻다. 그리고 용어의 뜻말고도 쓰임새도 같이 공부하였더니 코드가 눈에 더 잘 보이게되었다.

■공부

용어정리

-파싱

- 프레임워크: 뼈대나 기반구조(특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램)

-라이브러리: 특정 기능에 대한 도구 또는 함수들의 집합

※프레임워크의 종류

Flask 프레임워크: 서버를 구동시켜주는 편한 코드 모음.

※라이브러리의 종류

ajax : 자바스크립트의 라이브러리중 하나이며 서버에 데이터를 요청한다.

(비동기적 통신 교환 기법, Ajax는 jQuery를 임포트한 페이지에서만 동작 가능합니다.)

requests는 파이썬으로 HTTP 호출하는 프로그램을 작성할 때 가장 많이 사용되는 라이브러리입니다.

(Requests 라이브러리는 해당 주소로 요청을 보내면 응답을 받도록 해주는 HTTP 클라이언트 입니다.)

BeautifulSoup(크롤링) 은 HTML 및 XML 파일에서 원하는 데이터를 손쉽게 Parsing 할 수 있는 Python 라이브러리 입니다.

jquery: 편리한 javascript를 미리 작성해둔 것(라이브러리)

Bootstrap(부트스트랩): 대표적인 css 라이브러리이고 부트스트랩을 사용하면 디자인적인 감각이 부족한 개발자들도 보다 수준높은 UI를 가지는 웹 애플리케이션 개발이 가능합니다

pip: 앱을 설치할 때 앱스토어/플레이스토어를 가듯이, 새로운 프로젝트의 라이브러리를 가상환경(공구함)에 설치하려면 pip 를 이용하게 됩니다.

pymongo: mongodb라는 프로그램으르 조작하는 라이브러리

※프레임워크와 라이브러리의 차이점

흐름의 차이가 있다. 프레임워크는 자체적으로 흐름을 가지고 있어 프로그래머는 그 안에서 필요한 코드를 작성한다. 라이브러리는 프로그래머가 흐름을 갖고있어 라이브러리를 자신이 원하는 기능을 구현하고 싶을 떄 가져다 쓴다. 프레임워크는 집이고 라이브러리는 가구라고 보면된다.

※requests 사용처

import requests # requests 라이브러리 설치 필요 r = r=requests.get('') #데이터 요청

rjson = r.json() #파싱

gus = rjson['RealtimeCityAir']['row']

for gu in gus:

print(gu['MSRSTE_NM'], gu['IDEX_MVL'])

-json: 사람들이 읽을 수 있는 텍스트를 사용해 Key-Value 쌍으로 이루어진 데이터를 전달하는데 사용한다

(자주 쓰이는 데이터 형식, 헷갈려서 다시 적어봄 )

-api: 프로그램들이 서로 상호작용하는 것을 도와주는 매개체

※API의 역할은?

1. API는 서버와 데이터베이스에 대한 출입구 역할을 한다.

: 데이터베이스에는 소중한 정보들이 저장되는데요. 모든 사람들이 이 데이터베이스에 접근할 수 있으면 안 되겠지요. API는 이를 방지하기 위해 여러분이 가진 서버와 데이터베이스에 대한 출입구 역할을 하며, 허용된 사람들에게만 접근성을 부여해줍니다.

2. API는 애플리케이션과 기기가 원활하게 통신할 수 있도록 한다.

: 여기서 애플리케이션이란 우리가 흔히 알고 있는 스마트폰 어플이나 프로그램을 말합니다. API는 애플리케이션과 기기가 데이터를 원활히 주고받을 수 있도록 돕는 역할을 합니다.

3. API는 모든 접속을 표준화한다

: API는 모든 접속을 표준화하기 때문에 기계/ 운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있습니다. 쉽게 말해, API는 범용 플러그처럼 작동한다고 볼 수 있습니다.

※api만들고 사용하기

1) 클라이언트와 서버확인하기

2) 서버부터 만들기

3) 클라이언트 만들기

4) 완성 확인하기

-이 과정을 따라서 코딩하는 법을 배웠다.

2.배운 것과 찾은 것

1) print()와 return의 차이점

두 키워드의 관계는 복사기와 스캐너이다.

하나의 예를 들어보자.

막 들어온 신입사원이 대리가 보고서를 스캔해오라고 하였다.

그러나 신입사원은 어떻게 할 줄몰라 복사를 하고 말았고 그것을 대리에게 줄 수 없었다.

그래서 옆에 동료에게 물어봐 보고서를 스캔해왔다.

신입사원은 pdf를 대리에게 주었다.

즉, 복사기는 출력은 하지만 대리님께 줄 수 없었고 스캐너는 줄 수있고 pdf로 저장하였다.

print()는 출력은 하지만 변수에 값을 줄 수 없고 return는 변수에 값을 줄 수 있다.

다음은 파이썬 코드를 통해 이해해보자.

def function(x):

a = 3

b = 4

c = a*x + b

print(c)

d = function(4) #16을 출력

print(d) #None을 출력

d에서는 print(16)이 출력되고 print()를 변수에 넣지 못하고 None을 반환받아 d에 저장된다.

그래서 print(d)가 None으로 출력되었다.

2)flask사용하기

@app.route('/') #api역활을 한다.

-api는 타입이 여러가지 있지만 GET과 POST만 소개하겠다.

(1)GET

통상적으로 데이터 조회(Read)를 요청할 때 ex) 영화 목록 조회

데이터 전달 : URL 뒤에 물음표를 붙여 key=value로 전달 ex) google.com?q=북극곰

(2)POST

통상적으로! 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때 예) 회원가입, 회원탈퇴, 비밀번호 수정

데이터 전달 : 바로 보이지 않는 HTML body에 key:value 형태로 전달

- 요청 API코드

from flask import Flask, render_template, jsonify, request

app = Flask(__name__)

from pymongo import MongoClient

client = MongoClient('localhost', 27017)

db = client.dbhomework

#HTML화면 보여주기

@app.route('/')

def homework():

return render_template('index.html')

# 주문하기(POST) API

@app.route('/order', methods=['POST'])

def save_order():

sample_receive = request.form['sample_give']

print(sample_receive)

return jsonify({'msg': '이 요청은 POST!'})

# 주문 목록보기(Read) API

@app.route('/order', methods=['GET'])

def view_orders():

sample_receive = request.args.get('sample_give')

print(sample_receive)

return jsonify({'msg': '이 요청은 GET!'})

if __name__ == '__main__':

app.run('0.0.0.0', port=5000, debug=True)

- 요청 확인 Ajax코드

# GET 요청 확인 Ajax코드

$.ajax({

type: "GET",

url: "/test?title_give=봄날은간다",

data: {},

success: function(response){

console.log(response)

}

})

# POST 요청 확인 Ajax코드

$.ajax({

type: "POST",

url: "/test",

data: { title_give:'봄날은간다' },

success: function(response){

console.log(response)

}

})

■공부후

내가 개발일지를 쓰는 이유는 나중에 찾아와서 복사,붙여넣기를 하기 위함이다.

그래서 최대한 정리를 해서 강의 자료와 비교해서 볼 생각이다.

from http://mytrace.tistory.com/5 by ccl(A) rewrite - 2021-07-09 20:01:05