PythonがWebサービスを開発する利点は、開発効率が高いことです。これには、Javaコードの5分の1の量しか必要ありません。
Pythonには、Webサービスを構築するための多くのフレームワークがあります。この記事では、Djangoとbottleの2つのフレームワークを紹介します。
まず、フレームワークをインストールします
インストールは成功し、バージョンは1.11.28です。フレームワークファイルは\ python27 \ Scriptsディレクトリにインストールされます(コンピューターのPythonインストールディレクトリでスクリプトを検索するだけです)。
最初に\ python27 \ Scriptsディレクトリに入り、プロジェクトjinanwxを作成します(任意の名前で始まります)
新しく作成されたプロジェクトのディレクトリを同じディレクトリに表示できます
python27 \ Scripts \ jinanwx \ jinanwxと入力します。独自のモジュールを作成する
jgotest01.pyで記述された簡単なコードは次のとおりです
モジュールの機能は、json形式の結果を返すことです。
次に、urls.pyモジュールを変更する必要があります
カタログファイルは以下の通りです
とても簡単です。新しいファイルを作成し、別のファイルを変更すれば完了です。
前のディレクトリに戻ってサービスを開始します
正常に起動し、ブラウザアクセスを試してください
開発機能は特に複雑なWebサービスではないため、Djangoよりも軽量なボトルフレームワークの使用を検討できます。ボトルの例は、Linuxで示されています。
ボトルフレームを使用して最初に取り付けます。 1つの命令が実行されます。
# pip install bottle
Pythonコマンドラインインポートボトルを入力します。エラーが報告されない場合は、成功しています。
私のWebサービスはファイルbottleweb.pyで、コードは次のとおりです。いくつかの説明はコードコメントにあります
# coding=utf-8from bottle import(run, route,get, post, put,delete, request, hook, response, static_file, app)import json
import MySQLdb #この例では、データベースを操作する必要があります。それ以外の場合は、この行を記述する必要はありません。データベースパッケージpipは失敗したと推定されます。私は、yum installMySQLを使用しています。-python成功
import sys
reload(sys)
sys.setdefaultencoding('utf8')import bottle
app = bottle.default_app()#静的リソースの処理を定義する必要があります。静的リソースはこの行を書き込むことができません
# vueスキャフォールディングを構築する場合は、次の2つが必要です。@コンテンツをフックします。そうしないと、クロスドメインリソースアクセスエラーが報告されます
@ hook('before_request')
def validate():
REQUEST_METHOD = request.environ.get('REQUEST_METHOD')
HTTP_ACCESS_CONTROL_REQUEST_METHOD = request.environ.get('HTTP_ACCESS_CONTROL_REQUEST_METHOD')if REQUEST_METHOD =='OPTIONS' and HTTP_ACCESS_CONTROL_REQUEST_METHOD:
request.environ['REQUEST_METHOD']= HTTP_ACCESS_CONTROL_REQUEST_METHOD
@ hook('after_request')
def enable_cors():
response.headers['Access-Control-Allow-Origin']='*'
response.headers['Access-Control-Allow-Methods']='GET,POST,PUT,DELETE,OPTIONS'
response.headers['Access-Control-Allow-Headers']='*'
@ route('/test2020/dist/<path>')#Webサービスの下の静的リソースのアドレス、フロントエンド静的リソースのルートとアプリは配置されません.ルートは書けません
def stat(path):returnstatic_file(path, root='./dist/')
@ app.route('/test2020/dist/static/js/<path>')
def js(path): #vueがパッケージ化された後のディレクトリ構造はdistなどで静的であるため、これらのディレクトリをこのように記述しました。
returnstatic_file(path, root='./dist/static/js/')
@ app.route('/test2020/dist/static/css/<path>')
def css(path):returnstatic_file(path, root='./dist/static/css/')
@ get('/test2020/date')#表に日付を返すと、SQLを見ればわかります
def helloins():
db = MySQLdb.connect("127.0.0.1","yourusername","yourpassword","yourDBname", charset='utf8')
cursor = db.cursor()
sql ="select DISTINCT date from testtable"
print sql
cursor.execute(sql)
data = cursor.fetchall()
jsondata={}
results=[]for row in data:
result ={}
result['DATE']= row[0]
results.append(result)
jsondata['code']=0
jsondata['datas']=results
return jsondata #フロントエンドのvueの受信と処理を容易にするために、json形式を返します。実際、さまざまなタイプを返すことができます。
@ get('/test2020/helloworld')
def helloworld():return'hello world!'if __name__ =='__main__':run(host='0.0.0.0', port=2020, debug=True, reloader=True)
Bottleweb.pyが配置されているディレクトリで実行します
# python bottleweb.py
Webサービスが開始されます。ブラウザでhttp://127.0.0.1:2020/test2020/helloworldにアクセスして、効果を確認してください。
MySQLデータベースがインストールされている場合、test2020 / dateのURLが結果を返すことができるかどうかをテストできます
データベースに以下のデータがある限り
ユーザーが特定の日付を選択できるように、フロントエンドページは次のようになります。
フロントエンドはvue + vuxで開発され、パッケージ化および印刷されたものは、コードに記載されているdist静的リソースディレクトリにアップロードされます。
上記のコードが少し複雑だと思われる場合は、すべてのルート、app.routeのものを削除し、/ test2020 / dateステートメントブロックを削除し、@ hookを削除し、MySQLのものを削除し、フロントエンドのものをまったく無視することができます。シンプルなボトルウェブサービスは、ハローワールドに相当します。
Webサービスに必要なコンテンツである静的リソースとデータベースを含む上記のコードを可能な限り理解することをお勧めします。
発生したpipの問題を共有するために、私のPythonバージョンは2.6.6と非常に低くなっています。もともとyumのepelをインストールすることで、便利なpipが正常にインストールされました。しかし、pipコマンドを使用するたびに、下部にアップグレードを求めるプロンプトが表示されます
You are using pip version 9.0.3, however version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command
pip install --upgrade pip upgradeを実行しましたが、pipコマンドが使用できません。また、アップグレード後、下位バージョンのpipに再度インストールする場合、対応するインストールパッケージはありません。 Yumは20.0.2バージョンしか見つけることができません(古いバージョンは上書きされますか?)。
http://bootstrap.pypa.io/2.6/get-pip.py
get-pip.pyをダウンロードした後、正常にインストールできません。最後に、上記のアドレスにバージョン2.6のインストールファイルをダウンロードした後、使用できるpipが正常にインストールされます。
javaと比較して、pythonのWebコードは少なく、インストールするライブラリも少なくなっています。機能とパフォーマンスの要件を満たすことができる場合は、pythonの方が適している可能性があります。
Recommended Posts