c# - 如何在Angular中正确传递标头参数?
问题描述
在 Angular 中传递我的标头参数时遇到一些问题。我从我的 API 得到的错误是“需要会话 ID”,如下所示。这是我的端点:
[HttpDelete("")]
public IActionResult EndSession(
[Required(ErrorMessage = "Session Id is required.")]
[StringLength(maximumLength: 36, MinimumLength = 36, ErrorMessage = "Session Id should be 36 characters long.")]
[FromHeader] string sessionId)
这是我在角度应用程序中的服务方法:
public async EndSession(sessionId: string): Promise<boolean> {
const headers = new HttpHeaders()
.set(sessionId , 'string')
this.appSettings = (await this.configService.loadConfig().toPromise());
return this.http.delete<boolean>(this.appSettings.apiSetting.apiAddress + this.apiRoute, { headers })
.pipe(
retry(1),
catchError(this.handleError)
)
.toPromise()
在我调用此方法的组件中,我将 sessionId 硬编码如下:
export class AppBarHorizontalComponent implements OnInit {
sessionId = "4CB3C85B-2C11-48AE-8D51-1DC30242A743"
constructor(private oauthService: OAuthService, private userService: UserSessionService) { }
public logout(): void {
this.userService.EndSession(this.sessionId);
//this.oauthService.logOut(false);
我期望将 sessionId 作为标头参数正确传递,以便 api 方法可以正常执行。
解决方案
发现我的错误。在我设置标题的服务方法中,我混淆了参数。它是:
const headers = new HttpHeaders()
.set(sessionId , 'string')
变成:
const headers = new HttpHeaders()
.set('sessionId', sessionId)
推荐阅读
- java - Vaadin 改变视图后一切都变了
- symfony - API PLATFORM jwt 访问被忽略
- regex - awk gensub() 与正则表达式不匹配
- windows - 如何运行 YoloV3 Darknet 的“make”命令(适用于 Windows)?
- image-processing - 我需要一个注释工具来标记许多图像以创建数据库
- javascript - Telerik Kendo Grid 重新绑定问题
- apache-kafka-connect - 使用带 Avro 序列化的 Debezium mongodb CDC 创建的模式太多
- python - BigQuery 中时间分区表的自动架构
- python - 这个 tensorflow 安装有什么问题?我已经安装了 tensorflow 的 gpu 版本
- javascript - 如何将请求标头作为数组添加到 javascript 中的 window.open 帖子 url?