Python API programming

Published by onesixx on

API(Application Programming Interface)

web API (over the network or internet using HTTP request verbs)

: GET, POST, PUT

: HEAD, CONNECT, OPTIONS, TRACE, PATCH

https://api.coindesk.com/v1/bpi/currentprice.json

vscode ~ new file ~ select language : json ~ Shift+Option(alt)+ F ==> json 예쁘게 보기

{
    "time": {
        "updated": "Dec 19, 2021 04:19:00 UTC",
        "updatedISO": "2021-12-19T04:19:00+00:00",
        "updateduk": "Dec 19, 2021 at 04:19 GMT"
    },
    "disclaimer": "This data was produced from the CoinDesk Bitcoin Price Index (USD). Non-USD currency data converted using hourly conversion rate from openexchangerates.org",
    "chartName": "Bitcoin",
    "bpi": {
        "USD": {
            "code": "USD",
            "symbol": "$",
            "rate": "47,860.7833",
            "description": "United States Dollar",
            "rate_float": 47860.7833
        },
        "GBP": {
            "code": "GBP",
            "symbol": "£",
            "rate": "36,130.8711",
            "description": "British Pound Sterling",
            "rate_float": 36130.8711
        },
        "EUR": {
            "code": "EUR",
            "symbol": "€",
            "rate": "42,580.7817",
            "description": "Euro",
            "rate_float": 42580.7817
        }
    }
}
$ curl --include -X GET "https://api.coindesk.com/v1/bpi/currentprice.json"

HTTP/2 200 
content-type: application/javascript
content-length: 678
access-control-allow-origin: *
cache-control: max-age=15
date: Sun, 19 Dec 2021 06:05:59 GMT
expires: Sun, 19 Dec 2021 06:06:07 UTC
server: nginx/1.18.0
x-powered-by: Fat-Free Framework
x-cache: Miss from cloudfront
via: 1.1 df8ca7180650f326a42a059eda17d880.cloudfront.net (CloudFront)
x-amz-cf-pop: ICN54-C1
x-amz-cf-id: NOTs9OY2mKiCD27sdVqq5VgJQPF0uKimfC0J69Aq-B_ViKZHLkwqYA==

{"time":{"updated":"Dec 19, 2021 06:05:00 UTC","updatedISO":"2021-12-19T06:05:00+00:00","updateduk":"Dec 19, 2021 at 06:05 GMT"},"disclaimer":"This data was produced from the CoinDesk Bitcoin Price Index (USD). Non-USD currency data converted using hourly conversion rate from openexchangerates.org","chartName":"Bitcoin","bpi":{"USD":{"code":"USD","symbol":"$","rate":"47,677.7875","description":"United States Dollar","rate_float":47677.7875},"GBP":{"code":"GBP","symbol":"£","rate":"35,992.7246","description":"British Pound Sterling","rate_float":35992.7246},"EUR":{"code":"EUR","symbol":"€","rate":"42,417.9740","description":"Euro","rate_float":42417.974}}}% 
import os
import json

result = os.popen('curl --include -X GET "https://api.coindesk.com/v1/bpi/currentprice.json"')
output_json = result.read()
print(output_json)

json

https://docs.python.org/3.10/library/json.html

형태 변화 없이 형변환만 str으로

import json
# dictionary --> str json 
json_val = json.dumps(dict_val)
# json --> dictionary
dict_val = json.loads(json_val)

API사용하는 이유

  • 여러 Application 을 통합
  • cross-platform Application 만들기
  • Application의 기능 강화
  • Application에 외부접근 제공
  • app backend로써

API Design Patterns

복잡한 HTTP methods를 간략하기 위해 , HTTP architecture patterns을 사용

  • RESTful APIs
  • GraphQL APIs
  • CRUD APIs
  • SOAP APIs

RESTful APIs 의 methods

  • GET
  • POST
  • PUT
  • DELETE

Building API

import os
import json
import requests

URL = "https://api.coindesk.com/v1/bpi/currentprice.json"
response = requests.get(URL, verify=False)
print(response)
#
json.loads(response.content)

data = json.loads(response.content.decode("utf-8"))
bitcoin_price= data["bpi"]["USD"]['rate_float']
bitcoin_price
Categories: dash

onesixx

Blog Owner

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x