파이썬/파이썬(python) 중급

[37-2 파이썬] 2단계 그래프 정의하기

Olivia-BlackCherry 2022. 9. 29. 18:07
2단계
그래프를 정의하고, requests.post()를 해보자

- 다큐먼트 확인

- endpoint(URL)

https://pixe.la/v1/users/<username입력>/graphs</username입력>

 

- Authentication 인증

API에서 요구하는 인증방식은 두 가지가 있다. 

쿼리문자열 매개변수를 사용하거나, HTTP 헤더 방식을 사용하는 것이다.

실제 보안상의 이유로 HTTP 헤더 방식을 더 선호한다.

 

1) 쿼리문자열 매개변수 

querystring parameter

이제까지 우리가 써왔던 인증방식이다.

파라미터 안에 apikey 키와 그 값을 넣는다.

그런데 이와같은 방식은,

API에 requests 할 때 나의 API가 노출될 가능성이 높아 

보안이 취약하다.

query 뜻 물음표, 물음, 질의

string 뜻 문자열

parameter 뜻 매개변수

ex) parameter = {"apiKey" : "CBWBN93539FRRHA9"}

 

2) HTTP 헤더

그래서 HTTP 헤더방식을 사용하는데,

먼저 헤더(header)의 의미를 살펴보자.

신문기사를 예로 들어보자. 기사 전체는 크게 헤더와 바디로 나뉜다.

 

헤더(header)는 언론사이름, 전화번호, 로고 등이 나와있는 부분 등, 바뀌지 않은 부분을 이야기한다.

반면 바디(body)는 매번 바뀌는 기사 내용을 이야기한다. 

 

 

이처럼 코드를 작성할 때, header를 만들어 이 곳에 API Key를 저장한다.

이와 같은 방식은 requests를 할 때, API가 직접 노출되지 않기 때문에

보안상으로 더 안전하다고 볼 수 있다.

HTTP header

ex) headers = {"X_Api_Key": "CBWBN93539FRRHA9"}

 

- header 헤더

headers = {
    "X-USER-TOKEN": parameters["token"],
}

 

- 필수 파라미터

id: url에서 식별하는 id, a-z까지 알파벳, 숫자로 구성한다.

name: 그래프의 이름

unit: 측정 단위 killogram, calory, commit, km, hour, minute 등 

type: 측정 단위의 데이터형 float, int

color: 그래프의 색상, 일본어로 되어 있기 때문에 오탈자를 조심하기

 

 

requests.post(url =?, headers=headers, json=?)

url: endpoint(url)를 넣는다. 

headers: headers를 넣는다.

json: 파라미터를 넣는다.

graph_endpoint =f"https://pixe.la/v1/users/{parameters['username']}/graphs"
headers = {
    "X-USER-TOKEN": parameters["token"],
}
gragh_parameters ={
    "id": "olivia12345",
    "name": "olivia",
    "unit": "calory",
    "type": "float",
    "color": "shibafu"
}
response=requests.post(url=graph_endpoint, headers=headers, json=gragh_parameters)
print(response.text)

>>{"message":"Success.","isSuccess":true}