zipmark / rspec_api_documentation

Automatically generate API documentation from RSpec
MIT License
1.45k stars 361 forks source link

Curl output removes '_ID' Suffix from headers #361

Open jlbyrne opened 6 years ago

jlbyrne commented 6 years ago

I noticed a strange issue when trying to debug a problem in our documentation. Within the generated curl request, one of our headers is showing up as 'X-Api-Partner' instead of the correct 'X-Api-Partner-Id'.

I traced the problem back to rspec_api_documentation/lib/rspec_api_documentation/curl.rb:68. The format_header method is using titleize to capitalize the header name. Titleize unfortunately strips out '_id' suffixes, because it calls humanize. https://github.com/rails/rails/issues/26011

Could you update the format_header method to use something other than titleize? I was thinking something like this would work:

header.gsub(/^HTTP_/, '').split(/ |\_|\-/).map(&:capitalize).join('-')

Thank you.

mroach commented 6 years ago

Ouch. I can imagine you banged you head on the wall for a while on that one. Big +1 on not using titleize. I'd even go a step further and just downcase the whole header. This is the approach being taken in the Phoenix/Plug framework which I think makes sense. Then everyone knows headers are just lower-case all the time and it's easy to deal with.

I'm wondering why the HTTP_ prefix is being stripped out here too. If memory serves this header prefix only ever appeared in PHP and ASP Classic.