基本的な原因は、「無知」。でも記録しないと忘れるのでメモしていきます。
Qiita
事象 : CURLで&(アンパサンド)を使って複数の引数を送ったら、引数の条件に合わないレスポンスが返ってきた
- 環境
- Windows 10 Pro バージョン32H1
- curl 7.81.0 (x86_64-w64-mingw32)
直近の自分の記事を1件取得・・・するはずが・・・自分以外の記事が返ってきた。
$ curl -H 'Authorization: Bearer {トークン}' https://qiita.com/api/v2/items?page=1&per_page=1&query=user:ponsuke0531
[1] 1405
[2] 1406
[2]+ Done per_page=1
$ [{"rendered_body":...省略..., id":"syutorum001","items_count":4,"linkedin_id":"",...省略...
原因 : &はシェルの制御に使うわれるので、引数に&がある場所で引数の解釈が終わっているから
- 参考
# 以下を送ったのと同じことになっている
$ curl -H 'Authorization: Bearer {トークン}' https://qiita.com/api/v2/items?page=1
# 以下の出力が「バックグラウンドで実行したよ」ということなんだろうな・・・・
[2]+ Done per_page=1
対応 : ダブルクォーテーションで囲むか、&をエスケープする
「ダブルクォーテーションで囲む」の対応にしておくとMacなどでzsh: no matches found:になるのを防止する効果もあります。
# ダブルクォーテーションで囲む
$ curl -H 'Authorization: Bearer {トークン}' "https://qiita.com/api/v2/items?page=1&per_page=1&query=user:ponsuke0531"
[{"rendered_body":...省略...,"id":"ponsuke0531","items_count":475,"linkedin_id":"",...省略...
# &をエスケープする
$ curl -H 'Authorization: Bearer {トークン}' https://qiita.com/api/v2/items?page=1\&per_page=1\&query=user:ponsuke0531
[{"rendered_body":...省略...,"id":"ponsuke0531","items_count":475,"linkedin_id":"",...省略...
Backlog
事象 : "message":"","code":1,"moreInfo":""
- 使ったAPI : 課題コメントの追加 | Backlog Developer API | Nulab
- 事象 : GASでBacklogの課題にコメント追加で添付ファイルのIDをつけたらエラー
Exception: Request failed for https://xx.backlog.com returned code 400. Truncated server response: {"errors":[{"message":"","code":1,"moreInfo":""}]} (use muteHttpExceptions option to examine full response)
for (let i = 0; i < attachments.length; i++) {
// Backlogに添付ファイルを送信して発行されたIDをペーロードに追加する.
payload['attachmentId[' + i + ']'] = post_attachment(attachments[i]);
}
/** @type {string} 課題コメントの追加のAPIのエンドポイント. */
let endpoint = backlog_url + '/api/v2/issues/' + issueKey + '/comments?apiKey=' + backlog_apikey;
let params = {
method : 'POST',
payload : payload
};
// 課題コメントの追加で添付ファイルを課題に添付する.
UrlFetchApp.fetch(endpoint, params);
原因 : フリープランでは課題に添付ファイルは1つしかできないから
送信先のBacklogはフリープランだった・・・。
そして、対象の課題には既に添付ファイルがあった。
ブラウザで課題にファイルを添付しようとするとちゃんとメッセージが表示された。