API の users.json をテストする際、Postman でユーザーを作成すると正常に動作し、デフォルトでアクティブ化されます。つまり、active=true が機能しています。
しかし、Node.js のコードで同じパラメータを使用してユーザーを作成すると、active=true が機能しなくなります。ただし、成功メッセージは返ってきます。
success: true,
active: false,
なぜでしょうか。バックエンド側でもその状態を確認できません。
API の users.json をテストする際、Postman でユーザーを作成すると正常に動作し、デフォルトでアクティブ化されます。つまり、active=true が機能しています。
しかし、Node.js のコードで同じパラメータを使用してユーザーを作成すると、active=true が機能しなくなります。ただし、成功メッセージは返ってきます。
success: true,
active: false,
なぜでしょうか。バックエンド側でもその状態を確認できません。
私の推測では、あなたの Node.js コードが API キーを正しく渡していないため、active パラメータを上書きする権限が与えられていないのだと思います。もしコードのスニペットをここに共有していただければ、お手伝いできるかもしれません。
こんにちは、David さん。ありがとうございます。
以下が私のリクエストです。
{
"url": "users.json",
"method": "post",
"data": {
"api_key": "57d06a163190ee90de1118ac2adbaf5eeb5aa93d4d02dbe8f5d424c388f126e294c",
"api_username": "Nathan001",
"name": "tokgood",
"email": "tokgood@qq.com",
"password": "64c6457d-b815-4e87-8ea1-e66becd710bc",
"username": "2cx9pyCMyn",
"active": true,
"approved": true
},
"headers": {
"common": {
"Accept": "application/json, text/plain, */*"
},
"delete": {},
"get": {},
"head": {},
"post": {
"Content-Type": "application/x-www-form-urlencoded"
},
"put": {
"Content-Type": "application/x-www-form-urlencoded"
},
"patch": {
"Content-Type": "application/x-www-form-urlencoded"
},
"content-type": "multipart/form-data"
},
"baseURL": "https://www.tuntry.com/",
"transformRequest": [
null
],
"transformResponse": [
null
],
"timeout": 60000,
"xsrfCookieName": "XSRF-TOKEN",
"xsrfHeaderName": "X-XSRF-TOKEN",
"maxContentLength": -1
}
API ユーザーとキーを二度確認しましたが、問題ありません。
Axios で POST リクエストをラップしました。
const post = (url, data) => service.post(url, {
api_key: Config.discourse.api_key,
api_username: Config.discourse.api_username,
...data,
}
)
Node についてはあまり詳しくありませんが、見たところ問題なさそうです。
一つ試せる方法として、API 認証情報をパラメータではなく HTTP ヘッダーで送信することがあります。パラメータ経由での送信は非推奨となっており、管理パネルで警告が表示される可能性があります。ヘッダー名は Api-Key と Api-Username です(アンダースコアではなくハイフンに注意してください)。詳細は こちら をご覧ください。
素晴らしいですね!Api-Key と Api-Username を追加し、ヘッダーに 'content-type': 'application/json', を追加することで解決しました!