Manweill / swagger-axios-codegen

swagger client to use axios and typescript
MIT License
306 stars 83 forks source link

feature: add useHeaderParameters option #111

Closed vcing closed 4 years ago

vcing commented 4 years ago

起因:在目前项目使用过程中有一些参数在请求头中 而且为必填项 目前的版本会将这些参数加入到请求接口的参数类型中 然而实际上并没有将这些参数加入到axios的请求headers中 此处为一bug

另外工作中请求头中的参数大部分都为固定参数 所以使用新建axios实例来初始化headers中的参数,和README中展示的一样 所以在设置中增加了一个useHeaderParameters设置项 用来控制请求头中的参数是否进入接口的参数列表

目前headers的覆盖顺序为 {...requestParametersHeaders, ...requestOptionsHeaders, 'Content-type':XXX}

做了一些简单的测试,功能已经实现。 如还有遗漏的地方麻烦帮忙补充或者讨论。

(有几行的修改是由于Prettier格式导致的,如单行超过80字符,自动进行格式化了)

Manweill commented 4 years ago

@vcing 请求头一般不是保存一些公共参数,例如租户Id、公司Id等等这些吗。你们是每个请求的请求头都不一样?

vcing commented 4 years ago

是一样的 但是目前的逻辑是 每个请求 都要我把那几个参数传一遍 并且无法通过配置让模板忽略掉in header中的参数 就比如 example/swagger.json 中的 uploadLngLatUsingPOST接口 把client-id 和 x-token改成必填 而且目前就算传了也没用 axios请求中request header里面并没有加进去这些参数 是个bug

所以我在设置中添加了useHeaderParameters这个参数来控制

这个PR可以分为两部分吧 第一个就是修复request header parameter 没有生效的bug 第二个 才是添加参数来控制是否读取swagger中的 in header 参数 两次commit中也有写