Angular 12 .Net 6 值空值作为"null"传递给 API



我有一个angular 12 UI,它正在与.net 6 API通信。当查询字符串中的参数为空或未定义时,API将其解释为字符串值"0";空";或";未定义";。下方的相关代码

角度代码:

getDummyUser(type: string, testId: string):
Observable<UserDto> {
var url = `api/users/get-dummy-user?type=${encodeURIComponent(type)}&testId=${encodeURIComponent(testId)}`;
return this.httpClient.get<any>(url)
.pipe(
finalize(() =>
this.hideLoadingIndicators()
),
catchError(err => {
return throwError(err);
})
);

}

.net 6 api参数签名

[HttpGet]
[Route("get-dummy-user")]
public async Task<IActionResult> GetDummyUser
(
string type, 
string testId
)

我尝试过使用[FromQuery]属性,但结果是一样的。我也无法从angular应用程序发送",因为API将抛出400错误(错误请求(。有人有这方面的经验吗?提前感谢

在Angular中添加过滤器模型,并使用它将请求从Angular发送到.net示例:过滤器Model.ts

export class GetDummy{
type: string| null
testId: string |null

}

Component.ts(将请求发送到后端的位置(

let filters:GetDummy = new GetDummy();
filters.type="exampleType";
let filterToSend="";
Object.entries(filters).forEach(res=>{
filterToSend+="&"+res[0]+"="+res[1];

}); 
var url='api/users/get-dummy-user?'+filterToSend);

有了这个,请求将是

http//:api/users/get-dummy-user?type="exampleType"

这是一种只将所需选项发送到后端的方法,并且testId不会作为选项发送

我不知道这是与new.net 6还是angular 12有关,但现在似乎必须发送一个空字符串作为参数,并使字符串在.net端为null。我不知道为什么字符串现在必须声明为可以为null,而它本身就是…可以为null的。代码格式有问题,抱歉。以下的工作溶液

getDummyUser(type) {
this.userProvider.getDummyUser(type, '').subscribe(u => {
});


getDummyUser(type: string, testId: string):Observable<UserDto> {var url = `api/users/get-dummy-usertype=${encodeURIComponent(type)}&testId=${encodeURIComponent(testId)}`;return this.httpClient.get<any>(url).pipe(
finalize(() =>
this.hideLoadingIndicators()
),
catchError(err => {
return throwError(err);
})

);

[HttpGet]
[Route("get-dummy-user")]
public async Task<IActionResult> GetDummyUser
(
[FromQuery] string type, 
[FromQuery] string? testId
)
export interface IGetDummy{
type: string;
testId?: string;

}

sendingParams=[
//what u send as parameter to thi Api
]

getDummyUser(params:Params):{
return this.http.get<IGetDummy>(url,{observe:'response', sendingParams})
.pipe(
finalize(()=>{
this.hideLoadingIndicators();
},catchError(err => {
return throwError(err);
)
}

相关内容

  • 没有找到相关文章

最新更新