繁体   English   中英

Visual Studio后请求拥有自己的Rest Service

[英]Visual Studio post-Request to own Rest Service

这是我得到的:-一个Mysql数据库(包括必需品表等)-带有我的app.js文件的NODE.JS,它从数据库中的数据创建一个RestApi-一个带有nuget Packetes的Xamarin表单应用程序:* microsoft .net.http和* newtonsoft.json(我想如果它是Xamarin表单或WPF或其他任何东西,它就不会更老。)

在这里工作如何:在我的xamarin表单应用程序中,我可以使用rest api从数据中获取列表。 确实有效。

我要/不想要的工作:职位要求。 所以这是我在c#和.js中的代码,也许您可​​以看到问题:c#:

    private const string Url = "http://localhost:3003/einkauf_add";
    private HttpClient _client = new HttpClient();
    async void Save_Clicked(object sender, EventArgs e)
    {
            var nahrungsmittel = new Einkauf { Essen_Name = Name.Text, 
            Stueckzahl = int.Parse(Stueckzahl.Text) };


            //RESTAPI
            var content = JsonConvert.SerializeObject(nahrungsmittel);
           await _client.PostAsync(Url, new StringContent(content));}

(只有nesecerry部分,不要怀疑缺少诸如'}'之类的东西)

和app.js:

 const express = require('express')
 const app = express()
 const morgan = require('morgan')
 const mysql = require('mysql') 

const bodyParser = require('body-parser')

app.use(morgan('short'))
app.use(bodyParser.urlencoded({extended: false}))


function getConnection(){
    return mysql.createConnection({
        host: 'localhost',
        user: '**',
        password: '**',
        port: **, 
        database: 'test_db'
        })
}


//here should be the foult. i guess its where i get the "Stueckzahl or
 //Essen_name", but dont know how to fix
app.post('/einkauf_add',(req,res)=>{
    console.log("Trying to create new speise: "+req.Stueckzahl)

    const Essen_NameN = req.body.Essen_Name
     const StueckzahlN = req.Stueckzahl
    const queryString = "INSERT INTO Einkauf (Essen_name, Stueckzahl) values (?,?)"
    getConnection().query(queryString,[Essen_NameN, StueckzahlN], (err, results, fields)=>{
    if (err){
        console.log("Failt to insert: "+err)
        res.sendStatus(500)
        return
    }   
    res.end()
    })

})

//this is working:
app.get('/user/:id', (req, res) =>{
console.log("fetching user with id: "+ req.params.id)

    const connection = getConnection()

        const userId =  req.params.id
        const queryString = "SELECT * FROM test_user WHERE id = ?"

        connection.query(queryString,[userId], (err, rows, fields)=>{
                            if(err){
                console.log("Failed >>"+err)
                res.sendStatus(500)
                return
            }
        console.log("think its successfully")
            res.json(rows)
        })

    //res.end()
})

由于您是从客户端传递JSON格式的请求对象,因此需要将其解析回服务器中的JSON。 为此,您需要在服务器中添加以下行:

app.use(bodyParser.json());

之后,请求对象属性将在以下位置可用: req.body

另外,您将需要更改C#代码以对StringContent使用重载的构造函数。 必须进行此更改,以便“ Content-Type:application / json”标头与请求一起发送,这将使服务器知道内容类型为JSON,因此服务器将使用JSON解析器进行解析。

await _client.PostAsync(Url, new StringContent(content, UnicodeEncoding.UTF8, "application/json"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM