Flask调用自己定义的api

最近自己的做的一个项目flask_microblog里面有一个需求,就是要以api调用的形式显示用户的头像。

最初时为了简单,直接调用了Gravatr的api,就像这样。

def avatar(self):
   return 'https://www.gravatar.com/avatar/6b541a0a667f5558208aad7309c22936'

后来为了实现GitHub风格的默认头像功能,就自己写了个简单的api,就像这样

@api_bp.route('/user-avatar/')
def user_avatar(email_md5):
    user_avatar_dir = current_app.config['USER_AVATAR_DIR']
    user_avatar_path = user_avatar_dir + email_md5 + '.png'
    img = open(user_avatar_path, 'rb')
    resp = Response(img, mimetype="image/png")
    return resp

然后问题来了…我要怎么调用自己的api呢?

试了几种方法都没有成功

def avatar(self):
   return 'localhost:5000/api/user-avatar/'
   # return 'http://127.0.0.1:5000/api/user_avatar/'

最后发现正确姿势应该是使用url_for

就像这样

 def avatar(self):
    digest = md5(self.email.lower().encode('utf-8')).hexdigest()
    return url_for('api.user_avatar', email_md5=digest)

你可能感兴趣的:(python,Python,Flask)