Express Hapi.js Restfy Koa app.listen()およびapp.get()はどのように機能しますか?

user6246965

httpノードモジュール(ネイティブモジュールのみ)を使用して、app.listen()とapp.get()を再作成する方法コンストラクターでhttpモジュールを使用する

var app = function(opts) { 
     this.token= opts.token
 } 

 app.prototype.get = function(callback) {
     // use request and response of app.listen()
   }

  app.prototype.active = function(callback) {
  // use request and response of app.listen()
  // return on callback some manipulate 
  //request params
}


app.prototype.listen = function() {
 // start http or https server 
}

モジュールをインポートして、これを操作します

var app = require(...)

Var client = new app({
token: 0000
})

client.get(function(error, reply) {})
client.listen()
マット・ハリソン

Nodeのhttpモジュールの上に独自の非常に単純なHTTPフレームワークを構築するのは非常に簡単です。これは、app.get()app.listen()メソッドを実装するために私が作成した簡単なものです。これがどのように成長して、よりExpressのようなものになるかを確認できます。

'use strict';

const Http = require('http');
const Url = require('url');

// Framework

const Framework = function (options) {

    this.options = options;
    this.routes = [];
    this.listener = Http.createServer(this._onRequest.bind(this));
};

Framework.prototype.get = function (path, handler) {

    this.routes.push({ path, method: 'GET', handler });
};

Framework.prototype.post = function (path, handler) {

    this.routes.push({ path, method: 'POST', handler });
};

Framework.prototype.listen = function (callback) {

    this.listener.listen(this.options.port, callback);
};

Framework.prototype._onRequest = function (req, res) {

    // Find the first matching route

    for (let i = 0; i < this.routes.length; ++i) {
        const route = this.routes[i];
        const url = Url.parse(req.url);
        if (route.method === req.method && url.path === route.path) {
            return route.handler(req, res);
        }
    }

    // No matching routes

    res.writeHead(404);
    res.end('Not found');
};

このミニフレームワークは次のように使用できます。

const app = new Framework({ port: 4000 });

app.get('/', (req, res) => {

    res.end('Home page');
});

app.get('/about', (req, res) => {

    res.end('About page');
});

app.listen(() => {

    console.log('Started server!');
});

いくつかのcURLリクエストでテストできます。

$ curl -i http://localhost:4000/

HTTP/1.1 200 OK
Date: Sun, 24 Apr 2016 14:38:02 GMT
Connection: keep-alive
Content-Length: 9

Home page

$ curl -i http://localhost:4000/about

HTTP/1.1 200 OK
Date: Sun, 24 Apr 2016 14:38:08 GMT
Connection: keep-alive
Content-Length: 10

About page

$ curl -i http://localhost:4000/spaghetti

HTTP/1.1 404 Not Found
Date: Sun, 24 Apr 2016 14:38:14 GMT
Connection: keep-alive
Transfer-Encoding: chunked

Not found

明らかに、これは本当に基本的なフレームワークであり、hapiのようなフレームワークが解決した多くの問題に悩まされています。

  • パスのパラメータはサポートされていません/users/{id}URLパスは、ルートパスと正確に一致する必要があります
  • ルートを追加する順序は重要です(これは問題につながる可能性があります)
  • 競合するパスは許可されます
  • ファイルの提供やテンプレートのレンダリングなど、多くの優れた機能がありません(ただし、ハンドラーで手動で行うことはできます)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Node.js / Express.js-app.routerはどのように機能しますか?

分類Dev

Expressルーターの関数app.use(path、require path)はどのように機能しますか?

分類Dev

hapi-auth-jwt2 works is not working in hapi.js app?

分類Dev

Node.js + Expressアプリケーションで並行性はどのように機能しますか?

分類Dev

javascript-Express.jsのapp.set( 'port'、8080)とapp.listen(8080)

分類Dev

Express.js-app.listenとserver.listen

分類Dev

Expressはどのように機能しますか?

分類Dev

Expressで非同期はどのように機能しますか?

分類Dev

Express:この機能はどのように機能しますか?

分類Dev

Expressでのreq.sessionとreq.appおよびapp.setの違い

分類Dev

routers.getとapp.useがExpressで機能しない問題を修正するにはどうすればよいですか?

分類Dev

intro.jsはどのように機能しますか?

分類Dev

Sizzle JSはどのように機能しますか?

分類Dev

Nunjucksのaddfilter関数をapp.js以外のExpress.jsファイルに配置するにはどうすればよいですか?

分類Dev

Koa.jsとストリーミング。エラーをどのように処理しますか?

分類Dev

request(app).del()/。delete()はMocha / Supertestでどのように機能しますか?

分類Dev

app.set関数は何をしますか(express.js)?

分類Dev

Is there a Express-style nested router for Koa.js?

分類Dev

express.jsのapp.useとapp.getの違い

分類Dev

Expressはapp.listenまたはサーバーなしで機能します

分類Dev

GETリクエストをapp.jsのルートからExpress.jsのコントローラーフォルダーのルートに再ルーティングするにはどうすればよいですか?

分類Dev

jsではコンマ演算子はどのように機能しますか?

分類Dev

node.js-Busboyは実際にどのように機能しますか?

分類Dev

node.jsのrequire()はどのように機能しますか?

分類Dev

このJSラインはどのように機能しますか?

分類Dev

p5.jsの描画関数はどのように機能しますか?

分類Dev

次のUnderscore.jsコードはどのように機能しますか?

分類Dev

このjs配列はどのように機能しますか?

分類Dev

app.UseIdentityServerBearerTokenAuthenticationおよびUserInfo

Related 関連記事

  1. 1

    Node.js / Express.js-app.routerはどのように機能しますか?

  2. 2

    Expressルーターの関数app.use(path、require path)はどのように機能しますか?

  3. 3

    hapi-auth-jwt2 works is not working in hapi.js app?

  4. 4

    Node.js + Expressアプリケーションで並行性はどのように機能しますか?

  5. 5

    javascript-Express.jsのapp.set( 'port'、8080)とapp.listen(8080)

  6. 6

    Express.js-app.listenとserver.listen

  7. 7

    Expressはどのように機能しますか?

  8. 8

    Expressで非同期はどのように機能しますか?

  9. 9

    Express:この機能はどのように機能しますか?

  10. 10

    Expressでのreq.sessionとreq.appおよびapp.setの違い

  11. 11

    routers.getとapp.useがExpressで機能しない問題を修正するにはどうすればよいですか?

  12. 12

    intro.jsはどのように機能しますか?

  13. 13

    Sizzle JSはどのように機能しますか?

  14. 14

    Nunjucksのaddfilter関数をapp.js以外のExpress.jsファイルに配置するにはどうすればよいですか?

  15. 15

    Koa.jsとストリーミング。エラーをどのように処理しますか?

  16. 16

    request(app).del()/。delete()はMocha / Supertestでどのように機能しますか?

  17. 17

    app.set関数は何をしますか(express.js)?

  18. 18

    Is there a Express-style nested router for Koa.js?

  19. 19

    express.jsのapp.useとapp.getの違い

  20. 20

    Expressはapp.listenまたはサーバーなしで機能します

  21. 21

    GETリクエストをapp.jsのルートからExpress.jsのコントローラーフォルダーのルートに再ルーティングするにはどうすればよいですか?

  22. 22

    jsではコンマ演算子はどのように機能しますか?

  23. 23

    node.js-Busboyは実際にどのように機能しますか?

  24. 24

    node.jsのrequire()はどのように機能しますか?

  25. 25

    このJSラインはどのように機能しますか?

  26. 26

    p5.jsの描画関数はどのように機能しますか?

  27. 27

    次のUnderscore.jsコードはどのように機能しますか?

  28. 28

    このjs配列はどのように機能しますか?

  29. 29

    app.UseIdentityServerBearerTokenAuthenticationおよびUserInfo

ホットタグ

アーカイブ