ดังนั้นในการส่งคำขอ POST ไปยังส่วนสำคัญ (github) คุณสามารถทำสิ่งนี้ตามที่เห็นใน https: //gist.github.com/caspyi ...
curl --user "user" -X POST --data '{"description":"Created via API","public":"true","files":{"file1.txt":{"content":"Demo"}}' https://api.github.com/gists
แต่ในตัวอย่างข้างต้นชื่อไฟล์และเนื้อหาของไฟล์นั้นมีรหัสฮาร์ดซึ่งเป็นส่วน .. file1.txt":{"content":"Demo"}
..
ฉันกำลังแทนที่ส่วนด้านบนด้วยตัวแปรของฉัน $file":{"content":"$content"}
แต่เริ่มต้นตัวแปรคำขอ json จะต้องอยู่ในเครื่องหมายคำพูดคู่ซึ่งฉันทำ
curl --user "user" -X POST --data "{\"description\":\"Created via API\",\"public\":\"true\",\"files\":{\"$file\":{\"content\":\"$content\"}}' https://api.github.com/gists
แต่สิ่งนี้ใช้ไม่ได้ฉันได้รับข้อผิดพลาด json
{
"message": "Problems parsing JSON",
"documentation_url": "https://developer.github.com/v3/gists/#create-a-gist"
}
แม้ว่าฉันจะแทนที่เครื่องหมายคำพูดคู่ที่หลบหนีทั้งหมดด้วย \'
คำพูดเดียว
ไม่มีใครรู้วิธีรวมตัวแปรภายในคำขอ json นี้หรือไม่ btw: ฉันได้ใช้ส่วนหัวทั้งหมดเช่น
-H "Content-Type: application/json; charset=UTF-8"
และชุดค่าผสมจำนวนมากเพื่อตรวจสอบคำขอ แต่ไม่มีประโยชน์
UPDATE
นี่คือลักษณะของเนื้อหาทั้งหมด
function gist_controller(){
content=$(cat $1)
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
read -p "enter your password - " pass
public="false"
gist_content=$(cat $1)
curl --user "samserayo" -H "Content-Type: application/json; charset=UTF-8" -X POST -d "{ 'description': 'Created via API', 'public': 'true', 'files':{ ' '$1 ':{ 'content': '$gist_content'}}" https://api.github.com/gists
}