Azure Mobile Servicesでは、カスタムAPIを定義することで好き勝手APIが作れます。幸せですね。 しかも、Javascriptが使えます。うれしいですね。
ちなみにこれ、中身がExpress.jsなのでURLのルーティングができます。 URLのルーティングというのはたとえば、次のような感じ。
カスタムAPIを作成した直後だと、こんな次のようなスクリプトがデフォルトで書いてあります。
exports.post = function(request, response) { response.send(statusCodes.OK, {message: 'Hello, World!'}); }; exports.get = function(request, response) { response.send(statusCodes.OK, {message: 'Hello, World!'}); };
これにアクセスすると、次の結果になります。
method | url | response |
---|---|---|
GET | /api/name | 200 OK |
GET | /api/name/ | 200 OK |
POST | /api/name | 200 OK |
GET | /api/name/value | 404 Not found |
GET | /api/name/?key=value | 200 OK |
4個目の例をURLのルーティングを設定して200 OKになるようにしてみましょう。 具体的にはこんな感じ。
exports.register = function(api) { api.get("/:id", get_id); }; exports.post = function(request, response) { response.send(statusCodes.OK, {message: 'Hello, World!'}); }; exports.get = function(request, response) { response.send(statusCodes.OK, {message: 'Hello, World!'}); }; function get_id(request, response) { response.send(statusCodes.OK, {message: 'Hello, World!', id: request.params.id}); };
exports.registerに関数を設定してあげるとURLのルーティングができます。
Express.jsなのでまったく同じですね。
Azure Mobile Services側でおそらく次のようなコードが実行されているようです。
var express = require('express'); var app = new express(); var api = { get: function(uri, handler){ app.get('/\/api\/api_name\/'+uri+'/', handler); } }; // ... var api_name = require('api_name.js'); api_name.register(api);