【发布时间】:2022-06-15 22:31:12
【问题描述】:
我使用 NodeJS 作为后端,使用 Angular 13+ 作为前端。
我需要连接到 API Pole-Emploi,我使用 POST 请求并在我的服务器上接收我的 access_token。下一步是获取一些权限的 GET 请求。但我不知道我该如何处理这个 GET 请求......我在我的节点服务器上尝试过,直接在我的客户端上,但没有。我正在使用 axios 来完成我的请求。
我的 POST 向我发送令牌,但我的名为令牌的变量发送未定义... 我想我必须将我的令牌存储在一个变量中并在我的客户端发送它,但我不知道该怎么做。
如果有人有教程或可以给我一些帮助,我将非常感激
app.post('/pole_emploi/connexion', async (req, res) => {
let data = {
grant_type: config_pole_emploi.grant_type,
client_id: config_pole_emploi.client_id,
client_secret: config_pole_emploi.client_secret,
scope: config_pole_emploi.scope,
};
function getQueryString(data = {}) {
return Object.entries(data)
.map(
([key, value]) =>
`${encodeURIComponent(key)}=${encodeURIComponent(value)}`
)
.join('&');
}
let url =
'https://entreprise.pole-emploi.fr/connexion/oauth2/access_token?realm=%2Fpartenaire';
token = await axios({
method: 'post',
url,
data,
withCredentials: true,
transformRequest: getQueryString,
})
.then((response) => {
res.send(response.data.access_token);
// res.json({access_token: response.data.access_token })
})
.catch((error) => {
if (error.response) {
let { status, statusText } = error.response;
console.log(status, statusText);
res.status(status).send(statusText);
} else res.status(404).send(error);
});
console.log(token);
});
我在我的节点服务器上尝试了 GET 请求,如下所示:
app.get('/get_competences/pole_emploi', async (req, res) => {
await axios
.get(
`https://api.emploi-store.fr/partenaire/explorateurmetiers/v1/explorateurmetiers?libelle=a&nombre=20&type=competence`,
{
headers: { Authorization: `Bearer ${token}` },
}
)
.then((result) => result.data);
});
在我的客户端:
postAccessToken() {
let headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
return this._http.post(`${this.POLE_EMPLOI_URL}/connexion`, headers);
}
getCompetences(value: string): Observable<any> {
const token = this.postAccessToken();
const httpOptions = {
headers: new HttpHeaders({
Authorization: `Bearer ${token}`,
}),
};
return this._http.get(
`https://api.emploi-store.fr/partenaire/explorateurmetiers/v1/explorateurmetiers?libelle=${value}`,
httpOptions
);
}
什么都没有……
那么,我不确定 axios 是否适合这种类型的请求...
如果有人有教程或可以给我一些帮助,我会非常感谢
谢谢
【问题讨论】:
-
我不确定,但您应该尝试在您的第一个文件中将此部分修改为
token = await axios({ method: 'post', url, data, withCredentials: true, transformRequest: getQueryString(), })。
标签: node.js angular server frontend backend