docker版jxTMS使用指南:python服务之web

本文讲解4.0版的jxTMS中python服务的web模块,整个系列的文章请查看:docker版jxTMS使用指南:4.0版升级内容

docker版本的使用,请参考:docker版jxTMS使用指南

web模块主要用来提供rest接口,只使用POST方法、参数以json格式放入body中。web模块采用jwt进行身份认证。

引用:

from jx.web import web
from jx.web import UserRouter
新增一个uri的处理

web模块提供了基础类:UserRouter。使用UserRouter可以很方便的处理一个uri:

1、创建一个继承UserRouter的类,然后重写onPost

class demoCls(UserRouter):
    def onPost(self,u,data):
	    #u:登录用户
	    #data:post方法的json格式的body
        ...
        return result,rc,msg
        #result:结果数据,错误时为None
        #rc:http的状态码,200为ok,其它有错误
        #msg:错误时的提示信息,rc为200时为None

2、注册uri的处理类

web.register(uri_demo,demoCls)

注:web.register注册的新uri必须在web.start启动web服务前执行才会生效

用户登录

web预置了登录uri:

/api/login

访问该uri需要两个参数:

username:用户名
password:密码

返回:

状态码:200
说明:认证成功
返回:
	token:jwt生成的认证token

状态码:404
说明:认证失败
返回:
	msg:失败原因

状态码:402
说明:认证失败
返回:
	msg:错误的数据格式

登录成功后,后继访问都需要添加认证头:

X-Authorization:Bearer {token}

其中的token是认证成功后所获取的token值。

如果未提供X-Authorization或给出了错误的token,web返回:

状态码:401
说明:认证失败
返回:
	msg:未正确设置X-Authorization头

状态码:404
说明:认证失败
返回:
	msg:失败原因,包括:错误的token、用户不存在、已经超时,请重新登录、token失效,请重新登录

用户登录后token会保持15分钟的有效期,有效期内的每次访问都会自动展期,使用失效的token将会拒绝该次访问:token失效。

jxTMS的python服务的web模块不允许同一时刻的多重登录,在一个已登录用户的有效期内,如果有再次登录则:

  • 默认拒绝有效期内的重复登录。即拒绝新登录,维持原有登录

  • 如果用户配置为允许强制登录,则允许后者登录,但之前用户的token将会失效。即接受新登录,踢掉原有登录

用户登出

web预置了登出uri:

/api/logout

访问该uri需持有有效token,不需要参数。

持有有效token的用户请求了该uri后,该token就会失效。

用户操作

web预置了操作uri:

/api/access

访问该uri需持有有效token,并必须提供两个参数:

op:操作名
resID:希望访问的资源ID

jxTMS首先检查当前登录的用户是否对该资源ID的资源拥有执行op的权限。如果有权限则可以执行该操作,然后返回该操作的操作结果,并会对操作结果执行对应的数据处理策略。

返回:

状态码:200
说明:操作成功
返回:
	op注册的操作函数的执行结果,并进行了相应的数据处理

状态码:402
说明:操作失败
返回:
	msg:参数中未指定op或resID

状态码:404
说明:操作失败
返回:
	msg:操作未注册

状态码:403
说明:操作失败
返回:
	msg:没有操作权限

状态码:401
说明:认证失败
返回:
	msg:未正确设置X-Authorization头

状态码:404
说明:认证失败
返回:
	msg:失败原因,包括:错误的token、用户不存在、已经超时,请重新登录、token失效,请重新登录

状态码:402
说明:格式错误
返回:
	msg:错误的数据格式

操作函数执行不成功,也应按相应格式返回错误码及其说明

注1:op需要注册

注2:resID要做授权,以允许该用户或其映射的角色可以操作【由参数op指定】该资源或该资源所属资源组

启动web服务

调用web.server即可启动web服务:

server(cls,port=10028)
#port:监听的端口号

用register添加的uri只能在web启动前添加。

webClient

jxTMS同时提供了一个webClient的python的web前端。具体使用参考testWeb.py。

参考资料:

jxTMS设计思想

jxTMS编程手册

下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

如何用jxTMS开发一个功能

下面的系列文章讲述了jxTMS的一些基本开发能力:

jxTMS的HelloWorld

你可能感兴趣的:(jxTMS,docker,python,jxTMS,SaaS)