码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 编写第一个GET、POST接口[renren-fast框架系列(1)]


    配置好 renren-fast 脚手架,学习完 Spring MVC 架构后,我需要具体调试 renren-fast 的接口,比如要新增某个接口。

    什么是前后端分离

    运行 renren-fast 项目时,我们访问 http://localhost:8080/renren-fast/ 的结果:

    可以看到,接口给出了相应的回应,状态码 401 Unauthorized 代表客户端错误,指的是由于缺乏目标资源要求的身份验证凭证,发送的请求未得到满足。

    运行 renren-fast-vue 项目时,我们访问 http://localhost:8001/#/login :

    接着使用Chrome自带的网络工具:

    点击 Headers 可以查看 Request URL:

    以此,我们确认访问 后台接口为:http://localhost:8080/renren-fast/captcha.jpg?uuid=11e75e91-f584-4e38-804b-d6776535eed9

    同时还可以看到如下获取页面信息的 headers:

    请求的访问接口是:http://localhost:8001/static/config/index.js

    至此,我们便搞清楚了 renren-fast 前后端分离的业务是在说什么,即:后端逻辑使用 renren-fast 实现,前端请求获取的页面数据,使用 renren-fast-vue 实现。

    写一个无需鉴权的GET接口

    接下来我们基于 renren-fast 框架仿照 "/captcha.jpg" 写第一个接口, "/captcha.jpg"接口代码:

    	/**
    	 * 验证码
    	 */
    	@GetMapping("captcha.jpg")
    	public void captcha(HttpServletResponse response, String uuid)throws IOException {
    		response.setHeader("Cache-Control", "no-store, no-cache");
    		response.setContentType("image/jpeg");
    
    		//获取图片验证码
    		BufferedImage image = sysCaptchaService.getCaptcha(uuid);
    
    		ServletOutputStream out = response.getOutputStream();
    		ImageIO.write(image, "jpg", out);
    		IOUtils.closeQuietly(out);
    	}
    

    我们写一个 /testInterface 接口,在没写接口之前,我们访问: http://localhost:8080/renren-fast/testInterface ,返回如下样式:

    我们编写接口:

    	/**
    	 * 测试接口
    	 */
    	@GetMapping("/testInterface")
    	public String testInterface() {
    		return "hello";
    	}
    

    部署完之后访问: http://localhost:8080/renren-fast/testInterface ,仍旧是展示:

    那问题来了,我们这个接口部署的有问题吗? 显然是没有问题的,只是一个简单示例,接着我们在代码中搜索 "{"msg":"![invalid token]","code":401}" ,可以发现有这么一句:

    这意味着即使我们部署了接口,如果token不存在,也依旧会返回 401,但我们这个接口不需要 token 鉴权,所以要配置无需鉴权的逻辑。

    我们从哪里可以知道怎么配置如需鉴权呢? 还记得我们上面发现的一个无需鉴权的接口吗?

    http://localhost:8080/renren-fast/captcha.jpg?uuid=11e75e91-f584-4e38-804b-d6776535eed9

    /captcha.jpg 这个接口无需登录,只要任意修改uuid就能获取验证码,所以我们全局搜索 /captcha.jpg,可以发现有3处地方:

    一处是配置 filterMap,也就是无需鉴权的接口,我们在同样的地方加上我们自己的 testInterface 接口:

    另一处是配置接口参数、描述、回包数据等,我们也简单配置一下:

    配置完毕后重新部署,重新访问 http://localhost:8080/renren-fast/testInterface ,可以发现页面展示:

    接口部署成功!

    调试一个需要鉴权的GET接口

    GET 接口可以简单理解为从服务器获取数据,只是读数据;而POST接口允许通过请求让服务器做一些事情:比如写数据、删数据等等。

    当我们登录时,是向 http://localhost:8080/renren-fast/sys/login 发送 POST 请求,我们来使用 Postman 模拟发送 post请求,

    首先,我们要获取 验证码,我们请求: http://localhost:8080/renren-fast/captcha.jpg?uuid=11e75e93 ,获取验证码:b676b

    接着我们查看 /sys/login 接口代码得知:

    登录接口所必须的参数有:

    • uuid
    • captcha
    • username
    • password

    使用Postman发送Post请求成功:

    我们获取 token 为 5d68f7779618adba8a1fb37df4bbe8e6 ,那是不是意味着我们可以通过 token 访问那些有权限的接口了呢?我们试试:

    我们使用 Postman 发送 GET 请求: http://localhost:8080/renren-fast/sys/menu/nav?t=1647101933260&token=5d68f7779618adba8a1fb37df4bbe8e6

    果然回包成功了:

    小结

    通过本篇文章的学习,我们明确了如下的内容:

    • renren-fast 前后端分离的设计理念
    • 学会配置一个无需鉴权的简单接口
    • 通过postman调试了鉴权post逻辑和get逻辑

    至此我们可以自由编写 鉴权接口 和 非鉴权接口。


    文章首发:问我社区

  • 相关阅读:
    「湖仓一体」释放全量数据价值!巨杉数据库亮相2022沙丘大会
    电子电路学习笔记之NCV84120DR2G——车规级单通道高压侧驱动器
    MIPI CSI-2笔记(17) -- 数据格式(RGB图像数据)
    【C++笔记】C++继承
    C++ Qt开发:Slider滑块条组件
    Python爬虫:Selenium的介绍及简单示例
    【信号处理】非线性信号处理(Python代码实现)
    Leetcode.213 打家劫舍 II
    Linux常用命令(一) —— 开关机命令shutdown、远程登录命令ssh、远程拷贝文件命令scp
    分布式存储在数据治理场景中的价值
  • 原文地址:https://www.cnblogs.com/osmondwang/p/16002162.html
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号