Получение данных json запроса в C# методом HttpPost

#javascript #c# #node.js #request

Вопрос:

Я в процессе преобразования моей реализации nodejs моего бэкенда в c#. Я хочу получить тело запроса от моего клиента. Как получить доступ к телу запроса в c#. Затем я хочу использовать пользовательский ввод от клиента для выполнения другого вызова api с использованием параметров пользователей.

Вот код переднего плана

 class User {
    constructor(userData) {
        this.user = userData.id;
        this.login = userData.login;
        this.password = userData.password;
        this.email = userData.email;
        this.external_user_id = userData.external_user_id;
        this.facebook_id = userData.facebook_id;
        this.twitter_id = userData.twitter_id;
        this.full_name = userData.full_name;
        this.phone = userData.phone;
        this.website = userData.website;
        this.custom_data = userData.custom_data;
        this.user_tags = userData.user_tags;
        this.avatar = userData.avatar;
        this.created_at = userData.created_at;
        this.updated_at = userData.updated_at;
        this.last_request_at = userData.last_request_at;

        //encrypt the password
    }

}
export default User;


async signUp(userCredentials) {

        let userForm = new User(userCredentials);


        fetch("http://localhost:8080/auth/signup", {
            method: 'POST',
            body: JSON.stringify(userForm),
            headers: {
                'Content-Type': 'application/json',
            }
        })
            .then(response => {
                if (!response.ok) {
                    throw Error(`Error message: ${response.statusText}`)
                }
                console.log(response)
                return response.json()
            })
            .then(json => {
                console.log(json);
                sessionStorage.setItem('session_token', json.session_token)
                this.signIn({ login: userForm.login, password: userForm.password });
            })
            .catch(error => console.log(error))

    }

 

Вот реализация nodejs

 router.post("/signup", async (req, res) => {


    let reqBody = req.body;
    console.log(reqBody.password);

    console.log(req.headers["cb-token"]);
    let cbToken = req.headers["cb-token"];
    const userObj = {
        user: {
            login: req.body.login,
            password: req.body.password,
            email: req.body.email,
            full_name: req.body.full_name,
            phone: req.body.phone,
            website: req.body.website
        }
    }
    console.log(`token in auth route ${res.locals.session_token}`)


    fetch("https://api.connectycube.com/users", {
        method: "POST",
        headers: {
            "Content-Type": "application/json",
            "CB-Token": res.locals.session_token
        },
        body: JSON.stringify(userObj)
    })
        .then(response => {
            if (!response.ok) {
                throw Error(`Error message: ${response.statusText}`)
            }
            return response.json()
        })
        .then(data => {
            console.log(data)
            const resObj = Object.assign(data, { session_token: res.locals.session_token });
            res.status(200).json(resObj);

        })
        .catch(error => {
            console.log(error)
            res.status(400).json(error)
        })



})

 

Комментарии:

1. [HttpPost] public async<IActionResult> MyMethod([FromBody] ClassThatRepresentsRequestData bob) ?

2. Скорее всего, вам понадобится класс HttpRequest — он содержит все свойства входящего HTTP-запроса (например, тело или элементы формы / запроса). docs.microsoft.com/en-us/dotnet/api/…