文章加密

;

2020年12月19日 星期六

curl不只是個別字母的意義,更有它自己的source code

 https://curl.se/

https://github.com/curl/curl


※curl的definition:

curl is a tool to transfer data from or to a server, using one of the supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP). The command is designed to work without user interaction.

curl offers a busload of useful tricks like proxy support, user authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer resume, Metalink, and more.


※curl 學習完成的指令:

  1. get response:
    curl <site_url>
    same as
    curl -X GET  <site_url>
  2. 下載指定圖片
    curl -o <customed_fileName> <image_url>
  3. post
    curl -X POST -H "Content-Type: application/json" -d '{"name" : "Jack"}' "http://localhost:8080/post/"
  4. put
  5. delete
    這是執行delete方法的那個後端程式指定路徑中的function handler,如果handler裡沒有寫刪除檔案是不會刪除的!


https://blog.techbridge.cc/2019/02/01/linux-curl-command-tutorial/


※POST 的請求頭content-type:

HTTP 協議是以 ASCII 碼 傳輸,創建在 TCP/IP 協議之上的應用層規範。規範把 HTTP 請求分為三個部分:狀態行、請求頭、消息主體。

協議規定 POST 提交的數據必須放在消息主體(entity-body)中,但協議並沒有規定數據必須使用什麼編碼方式。Content-type 一般只存在於 Post 方法中,因為 Get 方法是不含 “body” 的,它的請求參數都會被編碼到 url 後面,所以在 Get 方法中加 Content-type 是無用的。

→所以POST取得傳入的資料用req.body.xxx
→所以GET取得傳入的資料用req.query.xxx

  1. application/x-www-form-urlencoded
    最常見 POST 提交數據的方式,瀏覽器的原生 <form> 表單,如果沒有設置 enctype 屬性,就會以默認以此方式提交數據。
    Content-Type 被指定為 application/x-www-form-urlencoded;其次,提交的數據按照 key1=val1&key2=val2 的方式進行編碼,key 和 val 都進行了 URL 轉碼。大部分服務端語言都對這種方式有很好的支持。
  2. multipart/form-data
    我們使用表單上傳文檔時,必須讓 form 的 enctyped 等於這個值。
  3. application/json
    由於 JSON 規範的流行,越來越多人把它當作 header。
    可以方便的提交複雜的結構化數據,特別適合 RESTful 的接口。各大抓包工具如 Chrome 自帶的開發者工具、Firebug、Fiddler,都會以樹形結構展示 JSON 數據。但也有些服務端還沒有支持這種方式,例如 php 就無法通過 $_POST 對象從上面的請求中獲得內容。需要自己手動處理下:在請求頭中 Content-Type 為 application/json 時,從 php:// input 裡獲得原始輸入流,再 json-decode 成對象。
  4. text/xml
    XML-RPC (XML Remote Procedure Call)協議簡單、功能夠用,各種語言的實現都有。它的使用也很廣泛,但已經逐漸被上面幾種方法取代。
總結:
Post 請求數據的時候有兩種,傳 json 的話就是 application/json,不傳 json 的話就是 application/x-www-form-urlencoded,傳文件的話用 multipart/form-data

reference: https://medium.com/@des75421/post-%E8%AB%8B%E6%B1%82%E9%A0%AD-content-type-82b93f9230f7



沒有留言:

張貼留言