Python (Flask)으로 간단한 WebAPI 구현
웹 앱에 API 기능 추가
이번에 작성하는 API는 작성한 게시판 사이트에 축적되어 있는 데이터를 프로그램으로 자동 추출하는 것을 즐길 수 있도록 구현합니다.
다음 사이트를 참고로 했습니다.
Python (Flask)을 사용하여 기계 학습 API 만들기
이 절에서는 GET 및 POST 메소드로 요청을 보내고 수신된 데이터를 JSON 형식으로 출력하는 방법을 설명합니다.
다음 사이트에 소스 코드가 있습니다.
Source Code
GET 방법
@app.route("/api_get/<key>", methods=["GET"])
def api_get(key):
data = {key: []}
thread_api_get = Thread.query.filter_by(threadname=key).first()
articles = Article.query.filter_by(thread_id=thread_api_get.id).all()
for article in articles:
r = {"name": article.name, "article": article.article}
data[key].append(r)
return jsonify(data)
jsonify(data)
표시되는 데이터가 일본어라고 문자화되어 버리므로, 이하의 설정을 추가해 주세요.
app.config['JSON_AS_ASCII'] = False
http://127.0.0.1:5000/api_get/<key>
의 <key>
의 부분에 취득하고 싶은 thread명을 맞추어 주세요.
브라우저로 액세스했을 때에 지정한 thread에 기사가 존재하고 있으면, 이하와 같이 정보를 취득할 수 있습니다.
POST 메소드
@app.route("/api_post", methods=["POST"])
def api_post():
print(request.data)
api_data_post = request.data.decode()
data = {api_data_post: []}
print(api_data_post)
thread_api_get = Thread.query.filter_by(threadname=api_data_post).first()
articles = Article.query.filter_by(thread_id=thread_api_get.id).all()
for article in articles:
r = {"name": article.name, "article": article.article}
data[api_data_post].append(r)
return jsonify(data)
http://127.0.0.1:5000/api_post/
에 브라우저로 액세스하면 다음과 같이 됩니다.
POST 메소드로만 액세스 할 수 있도록하고 있기 때문에 잘 표시되지 않습니다.
여기에서는 다음 스크립트를 사용하여 POST 메서드로 액세스합니다.
import requests
url = 'http://127.0.0.1:5000/api_post'
r = requests.post(url, data="hogehoge".encode('utf-8'))
print(r.text)
POST에서 전송되는 데이터는 바이너리이므로 복호화 처리를 추가해야 합니다.
request.data.decode()
취득 결과는 다음과 같습니다.
{
"hogehoge": [
{
"article": "ああああああああ",
"name": "hoge1"
},
{
"article": "いいいい いいい",
"name": "hoge2"
},
{
"article": "うう うう うう",
"name": "hoge3"
}
]
}
Reference
이 문제에 관하여(Python (Flask)으로 간단한 WebAPI 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tomson784/items/406281bef7a5b2eb3cd8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
@app.route("/api_get/<key>", methods=["GET"])
def api_get(key):
data = {key: []}
thread_api_get = Thread.query.filter_by(threadname=key).first()
articles = Article.query.filter_by(thread_id=thread_api_get.id).all()
for article in articles:
r = {"name": article.name, "article": article.article}
data[key].append(r)
return jsonify(data)
jsonify(data)
표시되는 데이터가 일본어라고 문자화되어 버리므로, 이하의 설정을 추가해 주세요.app.config['JSON_AS_ASCII'] = False
http://127.0.0.1:5000/api_get/<key>
의 <key>
의 부분에 취득하고 싶은 thread명을 맞추어 주세요.브라우저로 액세스했을 때에 지정한 thread에 기사가 존재하고 있으면, 이하와 같이 정보를 취득할 수 있습니다.
POST 메소드
@app.route("/api_post", methods=["POST"])
def api_post():
print(request.data)
api_data_post = request.data.decode()
data = {api_data_post: []}
print(api_data_post)
thread_api_get = Thread.query.filter_by(threadname=api_data_post).first()
articles = Article.query.filter_by(thread_id=thread_api_get.id).all()
for article in articles:
r = {"name": article.name, "article": article.article}
data[api_data_post].append(r)
return jsonify(data)
http://127.0.0.1:5000/api_post/
에 브라우저로 액세스하면 다음과 같이 됩니다.
POST 메소드로만 액세스 할 수 있도록하고 있기 때문에 잘 표시되지 않습니다.
여기에서는 다음 스크립트를 사용하여 POST 메서드로 액세스합니다.
import requests
url = 'http://127.0.0.1:5000/api_post'
r = requests.post(url, data="hogehoge".encode('utf-8'))
print(r.text)
POST에서 전송되는 데이터는 바이너리이므로 복호화 처리를 추가해야 합니다.
request.data.decode()
취득 결과는 다음과 같습니다.
{
"hogehoge": [
{
"article": "ああああああああ",
"name": "hoge1"
},
{
"article": "いいいい いいい",
"name": "hoge2"
},
{
"article": "うう うう うう",
"name": "hoge3"
}
]
}
Reference
이 문제에 관하여(Python (Flask)으로 간단한 WebAPI 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tomson784/items/406281bef7a5b2eb3cd8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
@app.route("/api_post", methods=["POST"])
def api_post():
print(request.data)
api_data_post = request.data.decode()
data = {api_data_post: []}
print(api_data_post)
thread_api_get = Thread.query.filter_by(threadname=api_data_post).first()
articles = Article.query.filter_by(thread_id=thread_api_get.id).all()
for article in articles:
r = {"name": article.name, "article": article.article}
data[api_data_post].append(r)
return jsonify(data)
import requests
url = 'http://127.0.0.1:5000/api_post'
r = requests.post(url, data="hogehoge".encode('utf-8'))
print(r.text)
request.data.decode()
{
"hogehoge": [
{
"article": "ああああああああ",
"name": "hoge1"
},
{
"article": "いいいい いいい",
"name": "hoge2"
},
{
"article": "うう うう うう",
"name": "hoge3"
}
]
}
Reference
이 문제에 관하여(Python (Flask)으로 간단한 WebAPI 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tomson784/items/406281bef7a5b2eb3cd8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)