即时通信软件后端API文档

1       概述

magic_chat目标是一款类似微信的即时通信软件,其后端是Python代码 Django框架实现的,功能包括注册、登录、消息发送、消息查看、实时发送消息等。

相关代码已上传github:https://github.com/djldjl/magic_chat

本文是后端服务的API接口说明文档,为前端开发人员提供接口说明。以下分模块说明各个后端功能API。

2       用户管理相关API

2.1         注册

协议: http

方法: POST

路径: register/

参数

参数说明

参数样例

phone

以电话为用户注册唯一标识

13910911111

password

用户密码

123456

地址样例:http://127.0.0.1:8000/register/

备注:需要在headers中加入csrftoken

成功返回样例(json):

{

    "status": 200,

    "msg": "用户注册成功"

}

2.2         登录

协议: http

方法: POST

路径: login/

参数

参数说明

参数样例

phone

以电话为用户注册唯一标识

13910911111

password

用户密码

123456

地址样例:http://127.0.0.1:8000/login/

备注:无

成功返回样例(json):

{

    "status": 200,

    "msg": "用户登录成功",

    "user_id": "e9eeb26cc8d64f53ad15e2d3c2cfe22f",

    "token": "c976fb18ace2bf6b88976d3b2e46378f0412ae9a"

}

2.3         修改密码

协议: http

方法: POST

路径: password/

参数

参数说明

参数样例

new_password1

第一次输入新密码;不能为空

12345678

new_password2

第二次输入新密码

12345678

地址样例:http://127.0.0.1:8000/password/

备注:需要在headers中加入成功登录获取的token(Authorization:Token 140a1bf3e4909c8a6a8dc070ff13c807aec23bb4)

成功返回样例(json):

{

    "status": 200,

    "msg": "修改密码成功"

}

2.4         登出

协议: http

方法: POST

路径: logout/

参数

参数说明

参数样例

 

 

地址样例:http://127.0.0.1:8000/logout/

备注:需要在headers中加入成功登录获取的token

成功返回样例(json):

{

    "status": 200,

    "msg": "退出成功"

}

2.5         个人设置

2.5.1       查看用户个人设置

协议: http

方法: GET

路径: profile/

参数

参数说明

参数样例

 

 

地址样例:http://127.0.0.1:8000/profile/

备注:需要在headers中加入成功登录获取的token

成功返回样例(json):

{

    "data": {

        "user_id": "e9eeb26cc8d64f53ad15e2d3c2cfe22f",

        "email": null,

        "phone": "13910911111",

        "nickname": null,

        "avatar_url": null,

        "status_text": null

    },

    "status": 200,

    "msg": "获取用户设置信息成功"

}

返回数据说明:

"user_id": 用户user_id,系统唯一,

"email": 用户email,可空,

"phone":用户电话,系统唯一,

"nickname": 用户昵称,

"avatar_url": 用户头像链接,

"status_text": 用户签名

2.5.2       设置用户个人设置

协议: http

方法: PUT

路径: profile/

参数

参数说明

参数样例

nickname

昵称;可选

猫咪

avatar_url

头像链接;可选

test.com/pic.jpg

status_text

个人签名;可选

太阳总会升起!

地址样例:http://127.0.0.1:8000/profile/

备注:需要在headers中加入成功登录获取的token

成功返回样例(json):

{

    "status": 200,

    "msg": "修改用户设置成功",

    "修改后data": {

        "user_id": "e9eeb26cc8d64f53ad15e2d3c2cfe22f",

        "email": null,

        "phone": "13910911111",

        "nickname": "猫咪",

        "avatar_url": "test.com/pic.jpg",

        "status_text": "太阳总会升起!"

    }

}

3       通讯录相关API

3.1         获取联系人信息

协议: http

方法: GET

路径: contact/

参数

参数说明

参数样例

 

 

地址样例:http://127.0.0.1:8000/contact/

备注:需要在headers中加入成功登录获取的token

成功返回样例(json):

{

    "data": [

        {

            "contact_user_id": "75fe180ff2104f1da1dc6619aaccfa20",

            "contact_phone": "13588888888",

            "contact_nickname": "天空依然",

            "contact_avatar_url": "http://test.com/pic",

            "status": 1

        }

    ],

    "status": 200,

    "msg": "获取通讯录成功"

}

返回数据说明:

"contact_user_id":联系人user_id,

"contact_phone":联系人电话,

"contact_nickname": 联系人电话,

"contact_avatar_url": 联系人头像链接,

"status": 联系人状态,1为正常,0为拉黑

 

3.2         添加联系人

协议: http

方法: POST

路径: contact/

参数

参数说明

参数样例

phone

以电话为标识添加联系人

13588888888

地址样例:http://127.0.0.1:8000/contact/

备注:需要在headers中加入成功登录获取的token

成功返回样例(json):

{

    "status": 200,

    "msg": "添加联系人成功"

}

3.3         删除联系人

协议: http

方法: DELETE

路径: contact/

参数

参数说明

参数样例

phone

以电话为标识删除联系人

13588888888

地址样例:http://127.0.0.1:8000/contact/

备注:需要在headers中加入成功登录获取的token

成功返回样例(json):

{

    "status": 200,

    "msg": "删除联系人成功"

}

4       消息获取和发送相关API

4.1         获取消息列表

协议: http

方法: GET

路径: message/list/

参数

参数说明

参数样例

 

 

地址样例:http://127.0.0.1:8000/message/list/

备注:需要在headers中加入成功登录获取的token

成功返回样例(json):

{

    "status": 200,

    "msg": "获取会话列表成功",

    "data": [

        {

            "id": 1,

            "last_msg": "this is 111",

            "last_msg_time": "2020-04-30 02:01:37.042768",

            "msg_count": 2,

            "msg_type": 0,

            "status": 1,

            "user_info": {

                "user_id": "548f00a3034e41c9adb657568a1dd150",

                "email": null,

                "phone": "111",

                "nickname": "猴子",

                "avatar_url": "test.com/abc",

                "status_text": null

            },

            "to_user_info": {

                "user_id": "e708808d07d54fa4b594d0c4daf98c39",

                "email": null,

                "phone": "222",

                "nickname": "小鸟",

                "avatar_url": "http://test.com/abc",

                "status_text": null

            },

            "self_msg_count": 0,

            "to_user_msg_count": 0,

            "cache_msg_count": "0"

        },

    ]

}

返回数据说明:

"id": 会话ID,2用户文字通信即为1个会话,

"last_msg": 本会话最后一条消息内容,

"last_msg_time": 最后一条消息发送的时间,

"msg_count": 保留字段,

"msg_type": 消息类型,0为文本,

"status": 会话状态,1为正常,

"user_info":本用户id、电话、头像等信息,

"to_user_info":对方用户id、电话、头像等信息,

"self_msg_count": 本用户未读消息数,

"to_user_msg_count": 对方用户未读消息数,

"cache_msg_count":本用户未读消息数,

4.2         查看最新消息

协议: http

方法: GET

路径: message/

参数

参数说明

参数样例

user_chat_id

所属会话ID;获取某个会话的消息

1

offset

从哪一条消息开始展现;可选;默认0

5

limit

每页展示几条消息;可选;默认5

3

地址样例:http://127.0.0.1:8000/message/

备注:需要在headers中加入成功登录获取的token

成功返回样例(json):

{

    "status": 200,

    "msg": "获取该会话的消息成功",

    "all_page_num": 9,

    "data": [

        {

            "id": 27,

            "send_time": "2020-04-29 12:01:10.404168",

            "message": "今天29号",

            "type": 0,

            "status": 1,

            "chat": 1,

            "from_user": 6,

            "to_user": 5

        },

        {

            "id": 26,

            "send_time": "2020-04-28 07:23:03.358066",

            "message": "知道,我今天买了一件新衣服~",

            "type": 0,

            "status": 1,

            "chat": 1,

            "from_user": 6,

            "to_user": 5

        },

        {

            "id": 25,

            "send_time": "2020-04-28 07:08:43.850539",

            "message": "今天我第二次跟你说话",

            "type": 0,

            "status": 1,

            "chat": 1,

            "from_user": 5,

            "to_user": 6

        }

    ]

}

返回数据说明:

"all_page_num": 总共多少页,

"data": [

        {

            "id": 消息ID,

            "send_time": 消息发送时间,

            "message": 消息内容,

            "type": 消息类型,0为文本,

            "status": 消息状态,1为正常,2为撤回,

            "chat": 所属会话ID,

            "from_user": 发送用户ID,

            "to_user": 目标用户ID

}

]

4.3         查看历史消息

协议: http

方法: GET

路径: message/

参数

参数说明

参数样例

user_chat_id

所属会话ID;获取某个会话的消息

1

start_time

查历史消息的起始时间;给出start_time则查看历史消息

2020-04-26 08:04:52

offset

从哪一条消息开始展现;可选;默认0

5

limit

每页展示几条消息;可选;默认5

3

地址样例:http://127.0.0.1:8000/message/

备注:需要在headers中加入成功登录获取的token

成功返回样例(json):

{

    "status": 200,

    "msg": "获取该会话的消息成功",

    "all_page_num": 4,

    "data": [

        {

            "id": 9,

            "send_time": "2020-04-26 07:51:53.056864",

            "message": "this is 222",

            "type": 0,

            "status": 1,

            "chat": 1,

            "from_user": 6,

            "to_user": 5

        },

        {

            "id": 8,

            "send_time": "2020-04-26 07:49:40.156990",

            "message": "this is 111",

            "type": 0,

            "status": 1,

            "chat": 1,

            "from_user": 5,

            "to_user": 6

        },

        {

            "id": 7,

            "send_time": "2020-04-26 07:26:58.566607",

            "message": "what are you doing now?",

            "type": 0,

            "status": 1,

            "chat": 1,

            "from_user": 5,

            "to_user": 6

        }

    ]

}

4.4         发送消息

协议: http

方法: POST

路径: message/

参数

参数说明

参数样例

to_user_phone

以电话标识目标用户

13588888888

message

消息内容

你好!忙啥呢?

地址样例:http://127.0.0.1:8000/message/

备注:需要在headers中加入成功登录获取的token

成功返回样例(json):

{

    "status": 200,

    "msg": "发送消息成功"

}

5       实时发送消息API(websocket)

使用websocket实时发送和接收消息。

协议: websocket

路径: ws/chat/

地址样例:ws://127.0.0.1:8000/ws/chat/?token=140a1bf3e4909c8a6a8dc070ff13c807aec23bb4

备注:需要在参数中加入成功登录获取的token

websocket连接:通信双方用户都要连接websocket,如果目标用户没有连接ws,则只有离线消息写入,没有实时消息。

发送数据(json格式):

字段

字段说明

字段值样例

message

消息内容

Hello!this is 13910911111

to_user_id

目标用户电话

13588888888

发送数据(json格式)样例:

{"message":"Hello!this is 13910911111","to_user_id":"13588888888"}

 

对方用户会马上收到消息,接收数据(json格式)样例:

{

  "message": "Hello!this is 13910911111"

}

posted @ 2020-05-02 08:48  djl_djl  阅读(628)  评论(0编辑  收藏  举报