在上篇我们谈到《mac OS Sublime Text3 配置成 Python IDE环境》,也有涉及到《Python Flask RESTful API -- HTTPAuth》,那么我们能不能在Sublime Text3运行Flask HTTPAuth呢,试试看.
1、在Sublime Text3新增一个.py文件,命名为FlaskHTTPAuth.py,代码如下:
# coding=UTF-8
from flask import Flask
#https://github.com/miguelgrinberg/flask-httpauth
#安装flask-httpauth后,在PyCharm-Preferences-Project-Interpreter-增加flask-httpauth
from flask_httpauth import HTTPBasicAuth
app = Flask(__name__)
auth = HTTPBasicAuth()
users = {
"kingly":"hello",
"susan":"bye"
}
@auth.get_password
def get_pwd(username):
if username in users:
return users.get(username)
return None
@app.route('/')
@auth.login_required
def index():
return 'Hello %s!!' % auth.username()
if __name__ == '__main__':
app.run()
快捷键 Command + B,运行成功。
运行结果
打开终端,测试RESTful API是否能成功调用,测试之前先安装 HTTPie
pip install HTTPie
按下回车键,安装成功,接着输入:
http -a kingly:hello http://127.0.0.1:5000
利用HTTPie中的http -a 命令带入API需要的用户名和密码(kingly:hello),访问成功。
http -a kingly:hello http://127.0.0.1:5000
果然能运行,喜悦之情溢于言表,高兴之余,在Sublime Text3 再次按下了快捷键,Command +B运行, 报错,图片如下:
error socket
看到了报错的关键词:socket.error: [Errno 48] Address already in use,这应该是通信方面的socket端口被占用的问题,应该是第一次运行时5000端口被占用了,还没来得及使用快捷键 Ctrl + C释放,知道原理后,只要找出占用端口的进程,杀死即可,打开终端,输入:
lsof -i :5000
查看端口占用情况,从下图可以看出Python程序占用5000端口
3.27.17.36.png
杀死进程,输入kill以及进程PID 4499,回车键执行:
kill 4499
返回Sublime Text3,再次Command + B运行程序,成功!
网友评论