簡體   English   中英

vibed:如何處理POST請求?

[英]vibed: How can I handle POST request?

我閱讀了docs ,誰能幫助我處理POST請求,但是我不清楚如何處理從頁面發送到Vibed服務器的POST請求。

我寫了下一個代碼:

import vibe.d;
import std.stdio;

void main()
{

    auto router = new URLRouter;
    router.any("*", &accControl);
    router.any("/my", &action);

    auto settings = new HTTPServerSettings;
    settings.port = 8080;
    settings.bindAddresses = ["::", "127.0.0.1"];

    listenHTTP(settings, router);
    runEventLoop();
}

void accControl(HTTPServerRequest req, HTTPServerResponse res)
{
    res.headers["Access-Control-Allow-Origin"] = "*";
}


void action(HTTPServerRequest req, HTTPServerResponse res)
{
    // how get string from POST request here. And how get JSON object, if server send it.
}

但是我應該使用哪種方法進行請求? 據我了解,POST正文會發送許多其他數據。

POST請求使用JQuery發送:

$.post("http://127.0.0.1:8080", "\"answers_result\":777");

因此,我需要獲取此JSON並將其發送到數據庫。 但是我不明白如何處理它的問題。

在主要方面:

auto router = new URLRouter;
router.post("/url_to_match", &action);

listenHTTP(settings, router);

行動:

void action(HTTPServerRequest req, HTTPServerResponse res)
{
    auto answers_result = req.json["answers_result"].to!int;

    // ...
}

或者,您可以使用registerRestInterface

以下示例代碼顯示了如何從vibe.d中讀取POST參數:

主功能:

shared static this()
{
   auto router = new URLRouter;
   router.post("/url_to_match", &action);

   auto settings = new HTTPServerSettings;
   settings.port = 3000;
   listenHTTP(settings, router);
}

行動:

void action(HTTPServerRequest req, HTTPServerResponse res)
{
    // Read first POST parameter named "first_name"
    auto firstName = req.form["first_name"];

    // Read second POST parameter named "last_name"
    auto lastName = req.form["last_name"];

    // Prepare output to be sent to client.
    auto name = "Hello %s, %s".format(lastName, firstName);

    // Send data back to client
    res.writeBody(name);
}

生成程序並運行它,以在本地計算機上進行嘗試,您可以執行以下簡單的curl請求:

curl --data "first_name=kareem&last_name=smith" "http://localhost:3000/url_to_match"

高溫超導

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM