我正在尝试通过画布 api 更改课程代码。我可以通过给出的例子让它在 bash 中工作
curl -X PUT -H 'Authorization: Bearer w3KhVblthisisnottoken5LmhlnUorFM8NJMh0' \
https://school.test.instructure.com/api/v1/courses/9066 \
-d 'course[course_code]=holla!' \
-v
我尝试在 powershell 中重现这一点。呼叫通过,但它没有做任何事情!
function Update-CanvasCourseName(
[Parameter(Mandatory = $true)][string] $CourseId,
[Parameter(Mandatory = $true)][object] $header,
[Parameter(Mandatory = $true)][string] $url,
[Parameter(Mandatory = $true)][string] $name
){
$uri = "$url$CourseId"
$body = @{"course[course_code]" = $name}
Invoke-WebRequest -Headers $header -Body $body -Method put -Uri $uri
}
$header = @{"Authorization"="Bearer $(C:\PowerShells\decryptText.ps1 -FilePath C:\Credentials\canvasapi.txt)"}
$course = 9066
$url = "https://holyfamily.test.instructure.com/api/v1/courses/"
Update-CanvasCourseName -CourseId $course -header $header -url $url -name "please work"
以前有人遇到过这个问题吗?我的代码中有什么我做错了吗?我无法重现我在 curl 中可以做的事情。
解决了!
问题是我使用了错误的内容类型。对于 Canvas LMS,执行 PUT 调用时必须选择 multipart/form-data。