【python】bottleを使ってAPIを作る(Content-Typeを付ける編) | 瀬戸内の雲のように

【python】bottleを使ってAPIを作る(Content-Typeを付ける編)

Posted: 2018-12-20


スポンサーリンク

目次

はじめに

以前pythonを使って簡単にAPIを作る方法を記事にしましたが、今回はそれをもう少し発展させ、レスポンスにヘッダを付け、Content-Typeを指定する方法をメモしておきます。

 

背景

以前【Python】たった5行でAPIを作れる、そうbottleならね という記事で、pythonのbottleというライブラリを使って簡単にAPIを作る方法を説明しました。その時のコードがこちらです。

# -*- coding:utf-8 -*-
from bottle import route, run, Bottle, request

@route('/hello')
def hello():
    return '{"message": "Hello, this is aws"}'

run(host='0.0.0.0', port=8080, debug=True)

 
しかしこの内容で実際にrestAPIを作った場合、クライアントの種類によってはうまく動作しません。

というのも、この内容ではヘッダが text/html になってしまうため、jsonとして扱ってくれない場合があるからです。

そこで今回はレスポンスのヘッダを操作してjsonとして認識させるようにするやり方をご説明します。

 

やり方

さっそくですが改良版のコードがこちら。

# -*- coding:utf-8 -*-
from bottle import route, run, Bottle, request, HTTPResponse
import json

@route('/hello')
def hello():
    body = '{"message": "Hello, this is aws"}'
    r = HTTPResponse(status=200, body=body)
    r.set_header('Content-type', 'Application/json')
    return r

run(host='0.0.0.0', port=8080, debug=True)

 
前回のコードではレスポンスに直接文字列を指定していましたが、今回は HTTPResponse というオブジェクトを指定するようにしています。

そして実際のレスポンスがこちら。

# curl -D - http://localhost:8080/hello
HTTP/1.0 200 OK
Date: Thu, 20 Dec 2018 23:53:32 GMT
Server: WSGIServer/0.1 Python/2.7.14
Content-Length: 33
Content-Type: Application/json

{"message": "Hello, this is aws"}

 
バッチリです。

以上、bottleを使ったAPIでレスポンスヘッダを指定する方法でした。


スポンサーリンク




コメント一覧


コメントを投稿する


お名前


コメント内容





TOP back