[英]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.