@fuyb1986
2016-04-11T10:03:08.000000Z
字数 1009
阅读 610
接口访问方式和身份验证方式
易安在线
术语
- 后端: Backend
- 前端: Frontend
- 身份验证: Auth
- 用户: User
- 用户名密码验证: BaseAuthen
- Token验证: TokenAuthen
- 接口: API
接口访问方式
- 所有接口都是RESTful API设计风格。
- 所有API都是对资源对操作。
- 对资源的操作包括: 获取、创建、修改和删除,对应HTTP协议的GET、POST、PUT和DELETE方法。
数据格式
- 所有数据都是JSON格式。
- 成功或失败的操作都返回相应的HTTP Status Code,例如:HTTP 200、HTTP 403。
- 返回的数据里有Backend定义的(status, message), 用于指示操作是否成功以及失败原因。
- Backend返回的(status, message) 作调试用,不作为生成环境成功或失败判断。
登录与身份验证方式
- /account/login/ API使用BaseAuthen验证身份,其余API使用TokenAuthen方式。
- /account/login/ API返回的token用作TokenAuthen。
- Frontend访问API时在HTTP header中指定token. For example:
Authorization: Token 9944b09119c62bcf9418ad846dd0e4bbdfc6ee4b
参考:
token-authentication-django-and-angular
rest-framework authentication
权限
- 身份验证通过后,API会验证用户权限。
- 多数资源的权限是: IsOwnerOrReadOnly。
- 有些资源要求: IsAdmin。
- 有些资源则是 AllowAny。
参考:
rest-framewok permissions
注意事项
- 更新、创建操作时Frontend依照文档保证数据有效,Backend不做数据二次加工。
- 更新、创建操作成功后,Backend返回更新或创建后的数据。不建议Frontend假定返回的数据与本地数据相同。
- 任何时候获取操作(GET)都不会改变资源。
- 任何时候禁止Frontend在Querstring里存储token。
- 任何时候禁止Frontend存储用户名和密码。
- 无效用户名和密码获取的token无法通过身份验证。
比如:用户名长度不合法、密码长度不合法、superuser密码太简单。