所有接口的方法你能看懂怎么做接口吗?

217 阅读8分钟

所有接口

请求根域名 http://123.57.109.30:3006

案例 - 图书相关

获取

  • 请求方式: GET
  • 请求地址: 根域名/api/getbooks
  • 请求参数:

不传参获取所有默认书籍, 也可以选择传递下面任意1-多个参数, 获取指定的相关书籍信息

参数名称参数类型是否必选参数说明
idNumber图书Id
booknameString图书名称
authorString作者
publisherString出版社
appkeyString个人ID
  • 返回示例:
{
  "status": 200, // 状态码200都代表完全成功 - 无任何意义随便写, 只是方便前端写判断条件
  "msg": "获取图书列表成功", // 后台返回的提示消息, 随便写, 只是方便前端直接打印提示消息
  "data": [ // 后台返回的数据
    { "id": 1, "bookname": "西游记", "author": "吴承恩", "publisher": "北京图书出版社" },
    { "id": 2, "bookname": "红楼梦", "author": "曹雪芹", "publisher": "上海图书出版社" },
    { "id": 3, "bookname": "三国演义", "author": "罗贯中", "publisher": "北京图书出版社" }
  ]
}

添加

  • 请求方式: POST
  • 请求地址: 根域名/api/addbook
  • 请求参数:
参数名称参数类型是否必选参数说明
booknameString图书名称
authorString作者
publisherString出版社
appkeyString个人ID
  • 返回示例:
{
    "status": 201, // 后台返回数据逻辑层的状态码, 201代表后台已经新增加了一个资源
    "data": {
        "author": "施大神"
        "bookname": "水浒传2"
        "id": 41
        "publisher": "未来出版社"
    }
    "msg": "添加图书成功"
}

删除

  • 请求方式: GET (以后会学习DELETE方式, 这里暂时先用GET)
  • 请求地址: 根域名/api/delbook
  • 参数格式:
参数名称参数类型是否必选参数说明
idNumber图书Id
appkeyString个人ID
  • 返回示例:
{
    "status": 200,
    "msg": "删除图书成功!"
}

案例 - 机器人相关

获取对话信息

每次用户发送消息后, 调用此接口, 把用户消息发送给后台, 后台会返回机器人回复的话语字符串

  • 请求方式: GET
  • 请求地址: 根域名/api/robot
  • 请求参数
参数名称参数类型是否必选参数说明
spokenString用户发送的消息
  • 返回示例
{
    data: { // 返回的机器人消息
    	type: 5000, 
        info: { // 机器人返回的内容
            text: "哟~ 都好都好"
        }
    },
	message: "success"
}

获取语音链接

  • 请求方式: GET
  • 请求地址: 根域名/api/synthesize
  • 请求参数
参数名称参数类型是否必选参数说明
textString要转换语言的字符串
  • 返回示例
{
    message: "success"
	status: 200 
	voiceUrl: "https://dds.dui.ai/runtime/v1/synthesize?voiceId=qianranfa&speed=0.8&volume=100&audioType=wav&text=3" // 语音消息播放的链接
}

上传文件

  • 请求方式: POST

  • 请求地址: 根域名/api/upload/avatar

  • 请求参数: (FormData内容类型格式)

    • 无具体的参数名字, 随便传递, 但是保证某个值是个文件即可
  • 返回示例

{
    data: {
        username: "4444"
    },
	message: "上传文件成功!",
	status: 200,
	url: "http://123.57.109.30:3006/uploads/1606467015584_faec0f0ac0c549b4b445dab627f5cdd9.png"
}

案例 - 评论相关

获取评论

  • 请求方式: GET
  • 请求地址: 根域名/api/cmtlist
  • 请求参数
参数名称参数类型是否必选参数说明
pageNumber页码数(从1开始)
appkeyString用户ID
  • 返回示例
{
    "status":200, // 状态码
    "msg":"获取评论列表成功", // 提示文字
    "data": [ // 评论的数据
        {
         "id":42, 
         "username":"小川同学",
         "content":"这是一条评论消息呀",
         "time":"2020-11-23 23:24:41"
        }
    ],
    "allPage":2 // 代表后台现有的数据, 20条一页, 一共能分多少页(方便前端进行分页的制作)
}

新增评论

  • 请求方式: POST
  • 请求地址: 根域名/api/addcmt
  • 请求参数
参数名称参数类型是否必选参数说明
appkeyString用户ID
usernameString评论用户名称
contentString评论内容
  • 返回示例
{
    "status":201,
    "msg":"发表评论成功" 
}

删除评论

  • 请求方式: GET (以后学了DELETE会使用这个方式, 其实就是跟后端对上就行, 用什么方式无所谓, 用DELETE语义更明确)
  • 请求地址: 根域名/api/delcmt
  • 请求参数
参数名称参数类型是否必选参数说明
idNumber评论信息的ID
appkeyString用户ID
  • 返回示例
{
    "status":200,
    "msg":"删除评论成功!",
    "allPage":1 // 删除后还剩余的页数, 用户让前端判断, 自动回退到上一页
}

超时接口

  • 请求方式: GET
  • 请求地址: 根域名/api/st
  • 请求参数: 无参数
  • 返回示例: 无返回 - 为了测试前端超时的判断效果而已

案例 - 新闻接口

  • 请求方式: GET
  • 请求地址: 根域名/api/news
  • 请求参数
参数名称参数类型是否必选参数说明
pageNumber页码
  • 返回示例
{
    "status":200,
    "msg":"获取新闻列表成功",
    "data":[
        {
            "id":1,
            "title":"1.5G商用在即,三大运营商营收持续下降",
            "source":"新京报经济新闻",
            "cmtcount":58,
            "tags":"三大运营商,中国移动,5G商用",
            "img":"/images/0.webp",
            "time":"2019-10-28T03:50:28.000Z"
        }
    ]
}

jsonp测试接口

  • 请求方式: 不用Ajax, 而是用script的src - (因为这种没有跨域限制) - 只能是GET请求
  • 请求地址: 根域名/api/jsonp
  • 请求参数: (如果有更多, 只能在URL后面拼接)
参数名称参数类型是否必选参数说明
callbackString回调函数名字
  • 返回示例:

    nihao([{"name":"小可爱","age":18},{"name":"可爱多","age":19}])
    

jsonp第二个2测试接口

  • 请求方式: 不用Ajax, 而是用script的src - (因为这种没有跨域限制)
  • 请求地址: 根域名/api/jsonp2
  • 请求参数: (如果有更多, 只能在URL后面拼接)
参数名称参数类型是否必选参数说明
cbString回调函数名字
  • 返回示例:

    nihao([{"name":"小可爱","age":18},{"name":"可爱多","age":19}])
    

反向代理-测试接口

  • 请求方式: GET
  • 请求地址: 根域名/api/163news
  • 请求参数: 无参数

商品搜索-回调地狱演示

一级分类

  • 请求方式: GET

  • 请求地址: 根域名/api/categoryFirst

  • 请求参数: 无参数

  • 返回示例:

{
    "msg":"恭喜你, 操作成功",
    "code":200,
    "list":[ // 一级分类的数据
        {"id":1,"firstId":"621","firstName":"咖啡","firstImgId":"2dfe06e6-2707-11e9-8040-e0accb719100"},
        {"id":2,"firstId":"627","firstName":"饮食","firstImgId":"2e4ab217-2707-11e9-96fc-e0accb719100"},
        {"id":3,"firstId":"279","firstName":"男装","firstImgId":"2ecf479c-2707-11e9-9381-e0accb719100"}
    ]
}

二级分类

  • 请求方式: GET
  • 请求地址: 根域名/api/categorySecond
  • 请求参数:
参数名称参数类型是否必选参数说明
firstIdString一级分类firstId(上个接口获取的)
  • 返回示例:
{
    "msg":"恭喜你, 操作成功",
    "code":200,
    "list":[
        {"id":1,"secondId":"622","secondName":"咖啡","firstId":"621"}
    ]
}

三级分类

  • 请求方式: GET
  • 请求地址: 根域名/api/categoryThird
  • 请求参数:
参数名称参数类型是否必选参数说明
secondIdString二级分类secondId(上个接口获取的)
  • 返回示例:
{
    "msg":"恭喜你, 操作成功",
    "code":200,
    "list":[
    {"id":1,"thiredId":"624","thiredName":"咖啡粉","secondId":"622","thirImgId":"2e30bb68-2707-11e9-b531-e0accb719100"},
    {"id":2,"thiredId":"623","thiredName":"咖啡豆","secondId":"622","thirImgId":"2e3d7ff5-2707-11e9-8c2c-e0accb719100"}
    ]
}

商品列表

  • 请求方式: GET
  • 请求地址: 根域名/api/goodslist
  • 请求参数:
参数名称参数类型是否必选参数说明
thirdIdString三级分类thirdId(上个接口获取的)
  • 返回示例:
{
    "msg":"恭喜你, 操作成功",
    "code":200,
    "list":[
 	  {"id":1,"status":"1","goodsId":"1302465003000100001","firstId":"621","secondId":"622","thiredId":"624","goodsName":"ANNY法式深焙袋冲咖啡(2*30g、非速溶咖啡)"}
    ]
}

淘宝搜索

  • 请求方式: jsonp (可以直接使用jQ的方式使用) - 前提是后台得支持
  • 请求地址: 根域名/api/sug (可以用我自己的) 也可以直接用淘宝官方的(它支持了jsonp请求 : suggest.taobao.com/sug?code=ut…)
  • 请求参数:
参数名称参数类型是否必选参数说明
qString输入框关键字(要url编码后)
  • 返回示例:
jQuery34104374435004415409_1606471107771(
    {
        "result":[
                    ["12pro手机壳","58734.12369243851"],
                    ["12promax 手机壳","173305.7419680675"],
                    ["11手机壳","200725.71157244474"],
                    ["11苹果手机壳","114873.59806278707"],
                    ["11promax手机壳","289287.0641240851"],
                    ["11pro手机壳","132314.46695816357"]
    	]
    }
)

参数类型

GET方式

直接在url后面拼接?key=value&key=value格式字符串即可

POST方式

  • (默认) - application/application/x-www-form-urlencoded (告诉后台参数格式是:key=value&key=value的字符串形式)
  • multipart/form-data (多部分的表单数据, 二进制流) - (告诉后台参数格式是二进制流片段形式, 请用对应方式接受解析)
  • application/json (告诉后台传递的是JSON字符串 '{"key": value, "key":value}'

总结

  • 请求方式GET / POST / ... 要与后端对应上
  • 请求的参数名 要与后端对应上
  • 传参的值的类型, 要与后端对应上

返回值状态

  • 200 - 代表获取 / 删除 成功
  • 201 - 代表新增成功
  • 500 - 代表后台代码报错