我有一个.net端点在这里:
public class ListContactRequest
{
public Guid userId { get; set; }
}
[Authorize]
[HttPost]
[Route("listContacts")]
public async Task<AddressBookListContacts> listContacts([FromBody]ListContactRequest req)
{
return blah blah....
}
我的react axios在 typescript 中调用
import { Guid } from "guid-typescript";
interface IListContactRequest {
userId: Guid;
}
const ListContacts = (user: IListContactRequest) => {
console.log(user);
return axios
.post(API_URL + "/listContacts", user, {
headers: {
"Content-Type": "application/json",
},
})
.then((response) => {
return response.data;
});
};
问题是,当axios方法触发时,它到达.net端点,但是,参数对象中的guid是以0000000 -0000-0000 - 0000 - 0000 - 0000000000的形式到达的
当控制台记录前端时,guid显示正确,但是当它到达后端API时,它似乎没有继续。
有人能给点建议吗?
console.log(JSON.stringify(user))
显示
{“用户ID”:{“值”:“24883 e12 - 439 d-4 e54-aae 5 - 5 b1 d5140833 e”}}
2条答案
按热度按时间vxbzzdmp1#
您的
Guid
正在作为具有value
属性的对象序列化为JSON,但您的C#模型不匹配。可以使用
Guid.prototype.toString()
或Guid.prototype.toJSON()
方法获取正确的值See https://github.com/snico-dev/guid-typescript#props-and-methods
也许更简洁的选择是将
IListContactRequest
作为一个类,而不是实现它自己的toJSON()
方法yacmzcpb2#
问题是您的端点需要类似以下的对象:
而你却把
因此,它无法将其反序列化为目标类型,而只是为您提供Guid的默认值。
您需要将axios调用更改为:
或者,如果您必须这样保留它,则需要将端点参数更改为类似
Dictionary<string, ListContactRequest>
的值