Help us understand the problem. What is going on with this article?

コピペで生きてきた人間がcurlコマンドのContent-Typeでハマった話

More than 1 year has passed since last update.

何処でつまづいたのか

csvファイルをpostしたくてjsonをpostするコードをコピペして脳死で書き換えたらファイル開けねーよってエラーが出て無駄な時間を過ごした。

コピペ元のコード

curl -X POST -H "Content-Type: application/json" http://localhost:8000/test -d "test.json"

脳死コード

curl -X POST -H "Content-Type: application/csv" http://localhost:8000/test -d "test.csv"

正しいコード

curl -X POST -H "Content-Type: text/csv" http://localhost:8000/test -d "test.csv"

Content-Typeってなんぞ

調べたところここに書いてありました。

タイプ 説明 代表的なサブタイプの例
text テキストを含んでおり、理論上は人間が読めるドキュメントを表します。 text/plain, text/html, text/css, text/javascript
image なんらかの種類の画像を表します。動画は含まれませんが、アニメーションする画像 (アニメーション GIF など) は画像のタイプで表します。 image/gif, image/png, image/jpeg, image/bmp, image/webp
audio なんらかの種類の音声ファイルを表します。 audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
video なんらかの種類の動画ファイルを表します。 video/webm, video/ogg
application なんらかの種類のバイナリーデータを表します。 application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

jsonってバイナリデータ扱いなんですね...。MIMEtypeについて調べたところサーバー側でそのファイルがどんなファイルであるかを識別するためにあるみたいですね。

結論

安易なコピペはやめて本質的な理解を目指そう!

参考

https://qiita.com/sensuikan1973/items/b2085a9cdc6d1e97e8f8

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away