yapi icon indicating copy to clipboard operation
yapi copied to clipboard

点击编辑的时候,raw类型的Body显示的不对,同时导出html和markdown时,Body内容是空的,导不出来!!!

Open zcjwsrf opened this issue 4 years ago • 5 comments

版本号

~ v1.9.1 v1.9.2 v1.9.3 所有版本都有这个问题

什么问题

~ 点击编辑的时候,Body显示的不对(一直显示{"type":"object","title":"empty object","properties":{}}),预览是对的。点一下运行,再点回编辑就对了。

如何复现此问题

~ 新建一个接口,然后选post请求,然后点击Body,点击raw,然后输入值,然后刷新页面。然后点击编辑的时候,Body显示的不对(一直显示{"type":"object","title":"empty object","properties":{}}),然后点击预览是对的。然后点一下运行,然后再点回编辑Body显示就又对了。

点击导出html或者markdown,Body内容都是空的,导不出来

什么浏览器

~ Chrome 版本 92.0.4515.107(正式版本) (64 位)

什么系统(Linux, Windows, macOS)

Windows

zcjwsrf avatar Jul 30 '21 05:07 zcjwsrf

调试了一下,应该是InterfaceEditForm.js ResBodySchema 的onChange导致的,传了非json数据,parse之后返回了默认数据,和原数据对比不相同,所以触发了 onChange,进一步改变了原始数据。 不知道作者如何修复这个问题

https://github.com/YMFE/yapi/blob/ed6771a25a5437562f6a7c277d86a778436a0769/client/containers/Project/Interface/InterfaceList/InterfaceEditForm.js#L1230-L1235

xsq007 avatar Feb 09 '22 01:02 xsq007

调试了一下,应该是InterfaceEditForm.js ResBodySchema 的onChange导致的,传了非json数据,parse之后返回了默认数据,和原数据对比不相同,所以触发了 onChange,进一步改变了原始数据。 不知道作者如何修复这个问题

https://github.com/YMFE/yapi/blob/ed6771a25a5437562f6a7c277d86a778436a0769/client/containers/Project/Interface/InterfaceList/InterfaceEditForm.js#L1230-L1235

估计不会修复了,这么久没动静

zcjwsrf avatar Feb 09 '22 02:02 zcjwsrf

搞了个workaround,如下面代码所示: 当原始res_body不是json,并且onChange传递的是默认json时,不做任何改动。 之后运行npm run build-client,主要是重新生成static/prd下的文件。

const defaultEmptyObjectString = JSON.stringify({"type":"object","title":"empty object","properties":{}})
                       
 onChange={text => {
                          // 如果原始数据非json,此处会意外修改原数据,导致非json数据丢失
                          // 此处代码避免意外修改非json
                          if (text === defaultEmptyObjectString && !checkIsJsonSchema(this.state.res_body)) {
                            return
                          }
                          this.setState({
                            res_body: text
                          });

xsq007 avatar Feb 09 '22 06:02 xsq007

+1

Erchoc avatar Oct 12 '22 06:10 Erchoc

+1

mingo0117 avatar Mar 23 '23 07:03 mingo0117