【问题标题】:Get rid of Content-type in postman request摆脱邮递员请求中的内容类型
【发布时间】:2018-06-21 06:37:55
【问题描述】:

我已经更改了我的应用程序,以便将Content-type 设置为application/json,以防标头不存在并且现在尝试对其进行测试。

为此,我使用 Postman。但是,当我取消选中“标题”选项卡中的“内容类型”标题时,邮递员仍然发送Content-type=text/plain;charset=UTF-8

有没有办法避免这种情况,而不是在Content-type 标头中发送任何内容?

不胜感激,谢谢

【问题讨论】:

  • 你用的是什么post方式?
  • @DanielElmnas 发布
  • 您可以在正文中发布nothing 吗?还是需要一定的有效载荷?如果做不到这一点,您是否需要为此使用 Postman?也许一个基本的 cURL 请求就可以了。
  • @DannyDainton 不,我不能。说实话,没有理由使用 Postman,但所有其他客户端都失败了——我尝试使用 curl,它也默认设置了这个 header。如果未设置值,Java 默认 HttpClient 也会默认设置此标头

标签: rest postman


【解决方案1】:

转到正文选项卡,从子菜单中选择“原始”。在子菜单中的“二进制”右侧,将提供一个选择列表。从此列表中选择“文本”(不是“文本[文本/纯文本]”)。这将删除 Content-Type 标头。

【讨论】:

  • 根据netcat这个还在发送Content-Type: text/plain
  • 我选择了Json而不是Text并在body中写了一些json
【解决方案2】:

这里有两件令人担忧的事情。

以便将 Content-type 设置为 application/json

您是说即使请求正文未指定为 JSON,您也希望将其解释为 JSON?为什么?!这可能会导致各种混乱,未来的框架可能会触发奇怪的默认值,并且现在不具体会在未来受到影响。

您可能混淆了 Content-Type 和 Accept 吗?我看到这种情况经常发生。

还有一点看起来很奇怪:

现在正在尝试测试它。

为什么要像这样“在浏览器中”进行测试? API 很容易通过集成测试进行测试,您可以在控制器上触发一些标头并查看它如何响应。

it 'is fine' do
  post '/endpoint', params: params, headers: { 'Content-Type' => 'foo' }

  expect(response).to match_some_whatever
end

it 'is also fine I guess' do
  post '/endpoint', params: params

  expect(response).to match_some_whatever
end

测试可以更好地确保工作正常,否则每当您更改内容时,您都必须检查 Postman 中的所有内容。这需要时间,不切实际,并且会导致您定期推动生产问题。

【讨论】:

    猜你喜欢
    • 2021-01-10
    • 1970-01-01
    • 2017-06-17
    • 2020-05-22
    • 2017-12-30
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    相关资源
    最近更新 更多