如何将参数传递给 Express post HTTP 方法?
How do you pass parameters to an Express post HTTP method?
我正在构建一个简单的 REST API(使用 PouchDB and Vue.js)。现在,我可以用几个字段创建 projects
:
server.js:
var express = require('express')
var PouchDB = require('pouchdb')
var app = express()
var db = new PouchDB('vuedb')
app.post('/projects/new', function(req, res) {
var data = {
'type': 'project',
'title': '',
'content': '',
'createdAt': new Date().toJSON()
}
db.post(data).then(function (result) {
// handle result
})
})
client.js:
// HTML
<input type="text" class="form-control" v-model="title" placeholder="Enter title">
<input type="text" class="form-control" v-model="content" placeholder="Enter content">
<button class="btn btn-default" v-on:click="submit">Submit</button>
// JS
submit () {
this.$http.post('http://localhost:8080/projects/new').then(response => {
// handle response
})
}
如何传递参数来设置title
和content
?在 REST API 中执行此操作的常规方法是什么?
在服务器端,您可以使用 req.body
.
在 POST 请求中访问客户端发送的数据
所以你的server.js文件应该是这样的:
var express = require('express')
var PouchDB = require('pouchdb')
var app = express()
var db = new PouchDB('vuedb')
app.post('/projects/new', function(req, res) {
var data = {
'type': 'project',
'title': req.body.title,
'content': req.body.content,
'createdAt': new Date().toJSON()
}
db.post(data).then(function (result) {
// handle result
})
})
在客户端,您必须将 POST 请求的主体与一个对象作为 $http.post
的第二个参数。 client.js 看起来像这样:
// HTML
<input type="text" class="form-control" v-model="title" placeholder="Enter title">
<input type="text" class="form-control" v-model="content" placeholder="Enter content">
<button class="btn btn-default" v-on:click="submit">Submit</button>
// JS
submit () {
this.$http.post('http://localhost:8080/projects/new', {
title: 'Your title',
content: 'The content'
}).then(response => {
// handle response
})
}
我正在构建一个简单的 REST API(使用 PouchDB and Vue.js)。现在,我可以用几个字段创建 projects
:
server.js:
var express = require('express')
var PouchDB = require('pouchdb')
var app = express()
var db = new PouchDB('vuedb')
app.post('/projects/new', function(req, res) {
var data = {
'type': 'project',
'title': '',
'content': '',
'createdAt': new Date().toJSON()
}
db.post(data).then(function (result) {
// handle result
})
})
client.js:
// HTML
<input type="text" class="form-control" v-model="title" placeholder="Enter title">
<input type="text" class="form-control" v-model="content" placeholder="Enter content">
<button class="btn btn-default" v-on:click="submit">Submit</button>
// JS
submit () {
this.$http.post('http://localhost:8080/projects/new').then(response => {
// handle response
})
}
如何传递参数来设置title
和content
?在 REST API 中执行此操作的常规方法是什么?
在服务器端,您可以使用 req.body
.
所以你的server.js文件应该是这样的:
var express = require('express')
var PouchDB = require('pouchdb')
var app = express()
var db = new PouchDB('vuedb')
app.post('/projects/new', function(req, res) {
var data = {
'type': 'project',
'title': req.body.title,
'content': req.body.content,
'createdAt': new Date().toJSON()
}
db.post(data).then(function (result) {
// handle result
})
})
在客户端,您必须将 POST 请求的主体与一个对象作为 $http.post
的第二个参数。 client.js 看起来像这样:
// HTML
<input type="text" class="form-control" v-model="title" placeholder="Enter title">
<input type="text" class="form-control" v-model="content" placeholder="Enter content">
<button class="btn btn-default" v-on:click="submit">Submit</button>
// JS
submit () {
this.$http.post('http://localhost:8080/projects/new', {
title: 'Your title',
content: 'The content'
}).then(response => {
// handle response
})
}