吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 972|回复: 3
收起左侧

[求助] 有大佬知道Gin中的.AbortWithStatusJSON 和.json的区别吗?

[复制链接]
hybpjx 发表于 2023-3-31 17:29
本人纯小白,自己做项目的时候好奇这个问题
想知道context.AbortWithStatusJSON  和 context.JSON 有什么区别吗?
看了源码
c.AbortWithStatusJSON  要比 c.JSON 要多执行一个 c.Abort()
Abort 函数 又是 终止后面所有的该请求下的函数。
那是不是说我在中间件执行了 c.Next() 然后调用 .AbortWithStatusJSON  方法 就不用调用.Abort了

想问下 这两个方法的使用环境是咋样的?还是说无所谓使用哪个

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

admib木木 发表于 2023-3-31 17:39
c.AbortWithStatusJSON 和 c.JSON 都可以用来在 Gin 框架中设置响应的 JSON 数据和 HTTP 状态码。它们的主要区别在于是否终止请求处理流程。

c.JSON 只是将 JSON 数据设置为响应体,但不终止后面的请求处理流程。而 c.AbortWithStatusJSON 则会将 JSON 数据设置为响应体,并终止后面的请求处理流程,使得后面的中间件函数和路由处理函数都不再被执行。

所以,如果你需要在设置响应数据时同时终止请求处理流程(例如当出现错误时),就应该使用 c.AbortWithStatusJSON;否则,如果你只需要设置响应数据而不需要终止请求处理流程,那么就可以使用 c.JSON。

需要注意的是,如果在一个中间件执行了 c.Next(),那么后面的中间件函数和路由处理函数都还没有执行,此时调用 c.AbortWithStatusJSON 方法时不需要再显式地调用 Abort() 方法,因为 AbortWithStatusJSON 已经隐式地调用了 Abort() 方法。但是,如果你在中间件函数的结尾处手动调用了 Abort() 方法,那么后面的中间件函数和路由处理函数都不会再被执行。

免费评分

参与人数 1吾爱币 -4 收起 理由
侃遍天下无二人 -4 禁止照搬AI回复

查看全部评分

bibicivizizi 发表于 2023-3-31 19:17
不知道哦

免费评分

参与人数 1吾爱币 -8 收起 理由
侃遍天下无二人 -8 请勿灌水,提高回帖质量是每位会员应尽的义务!

查看全部评分

 楼主| hybpjx 发表于 2023-4-3 11:06
admib木木 发表于 2023-3-31 17:39
c.AbortWithStatusJSON 和 c.JSON 都可以用来在 Gin 框架中设置响应的 JSON 数据和 HTTP 状态码。它们的主 ...

学到了学到了 大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表