【问题标题】:How to create post request with Koa nodejs如何使用 Koa nodejs 创建发布请求
【发布时间】:2018-12-24 06:42:56
【问题描述】:

我刚刚开始使用Koa 并使用以下代码进行了基本设置

const Koa = require('koa');
const app = new Koa();

// logger

var port     = process.env.PORT || 8080; // set our port

// response

app.use(async ctx => {
  console.log(ctx.query)
  ctx.body = 'Hello World';
});

app.listen(port);
console.log('Magic happens on port ' + port);

现在,当我点击请求 http://localhost:8080 时,我在 ctx.query 的控制台中收到了请求。

问题:如何使用 koa 框架发出 postget 请求?

编辑:我现在已经实现了 Koa-router

const Koa = require('koa');
const koaBody = require('koa-body');
const router = require('koa-router')();
const app = new Koa();
app.use(koaBody());
// logger

router.get('/users', koaBody(),
  (ctx) => {
    console.log(ctx.request.query);
    // => POST body
    ctx.body = JSON.stringify(ctx.request.body);
  }
)

router.post('/user', koaBody(),
  (ctx) => {
    console.log('dfssssssssssssssssssssss');
    console.log(ctx);
    // => POST body
    // ctx.body = JSON.stringify(ctx.request.body);
  }
)

var port     = process.env.PORT || 8080; // set our port
app.use(router.routes());
app.listen(port);
console.log('Magic happens on port ' + port);

问题还是一样。我可以发出 get 请求,但不能发出 post 请求。

【问题讨论】:

标签: javascript node.js koa koa-router


【解决方案1】:

使用 koa-router 和 koa-bodyparser 中间件

var Koa = require('koa');
var bodyParser = require('koa-bodyparser');
var Router = require('koa-router');

var app = new Koa();
var router = new Router();
app.use(bodyParser());

router
  .get('/', (ctx, next) => {
    ctx.body = 'Hello World!';
  })
  .post('/users', (ctx, next) => {
    // handle your post request here
    ctx.body = ctx.request.body;
  })
  .put('/users/:id', (ctx, next) => {
    // ...
  })
  .del('/users/:id', (ctx, next) => {
    // ...
  })
  .all('/users/:id', (ctx, next) => {
    // ...
  });
app
  .use(router.routes())
  .use(router.allowedMethods());

【讨论】:

  • 嗨,我怎样才能返回响应?
【解决方案2】:

使用 koa 路由器

var Koa = require('koa');
var Router = require('koa-router');

var app = new Koa();
var router = new Router();

router.get('/', (ctx, next) => {
  // your get route handling
});

router.post('/', (ctx, next) => {
  // your post route handling
});

app
  .use(router.routes())
  .use(router.allowedMethods());

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多