实习修炼第十六天

整体进程

错误检查
Postman中post请求测试
maven部署的刷新问题
http消息结构

错误检查之web端试运行500错误

错误描述:

Please check registry access list (whitelist/blacklist).

Postman测试工具报错信息

 "timestamp": 1563167741835,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "com.alibaba.dubbo.rpc.RpcException",
    "message": "Forbid consumer 20.86.20.100 access service com.mini.coupon.service.CouponService from registry 127.0.0.1:2181 use dubbo version 2.5.3, Please check registry access list (whitelist/blacklist).",
    "path": "/coupon/drawCoupon"
}

项目中的报错是因为zookeeper服务未启动或者service端未启动的原因,在网上浏览时发现一种有趣的分析,虽然与我的错误无紧密关系,但还是感觉很有意思。其实这一错误原因从根本上来说就是服务端的接口不让访问。

zookeeper启动

  • ./zkServer.sh start -->启动
  • ./zkServer.sh status -->查看状态
  • ./zkCli.sh -->启动客户端
    实习修炼第十六天_第1张图片
  • ls / -->查看注册
    实习修炼第十六天_第2张图片

Postman中post请求测试中json数据格式

在post请求当中,json数据格式的请求,请求头常规为:Content-Type:application/json

因为@RequestBody接收的是一个Json对象的字符串,故而调用service时未加入@RequestBody导致空指针;另外不难查到@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。
web调用代码

@RequestMapping("/drawCoupon")
    @AutoLogger
    @ResponseBody
    public ServiceResponse drawCouponToUser(@RequestBody DrawCouponReq drawCouponReq){
        return couponService.drawCoupon(drawCouponReq);
    }

json语句传递数据post请求
因为在DrawCouponReq中还有个数据类,所以在使用下面json语句进行post请求时出现错误

{
        "id":12350,
        "couponId":145001,
        "groupId":1001,
        "createTime":20190704,
        "endTime":20181910,
        "userId":100001,
        "value":18,
        "status":1,
        "isValid":1,
        "updateTime":20190704
}

在改成下图的数据嵌套一层的格式后正确
实习修炼第十六天_第3张图片

maven部署的刷新问题

在进行maven部署jar包后,有时会出现重新导入的jar包和刚刚部署的jar包不一致的问题,原因是由于本地缓存的影响,可通过删除本地缓存再刷新maven仓库进行修正。如下图所示
实习修炼第十六天_第4张图片
如果上图方式也不能解决,可采用提高version版本来解决。

http消息结构

简单了解
可参考 https://developer.mozilla.org/zh-CN/docs/Web/HTTP 文档进行http的学习了解,在浏览器中可用F12进入如下界面查看http请求的接口和信息
实习修炼第十六天_第5张图片
然后任选一个调用的资源就可以查看http信息
实习修炼第十六天_第6张图片
htttp消息
(参考 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Messages 文档)
HTTP 请求和响应的消息具有相似的结构,由以下部分组成︰

  1. 起始行:用于描述要执行的请求(比如POST或GET),或者是对应的状态,成功或失败。这个起始行总是单行的。
  2. Headers:一个可选的HTTP头集合指明请求或描述消息正文(GET请求时Body为空),是必须的;
  3. 一个空行指示所有关于请求的元数据已经发送完毕;这是http协议的规范;
  4. Body:一个可选的包含请求相关数据的正文 (比如HTML表单内容), 或者响应相关的文档。 正文的大小有起始行的HTTP头来指定。每当我们打开一个网页,在上面点击右键,选择“查看源文件”,这时看到的HTML代码就是HTTP的消息体。

**起始行和 HTTP 消息中的HTTP 头统称为请求头,而其有效负载被称为消息正文。**结构如下图
实习修炼第十六天_第7张图片
Http响应返回状态码
实习修炼第十六天_第8张图片

浏览器工作原理扩展阅读

你可能感兴趣的:(学习进程)