示例#1
0
"use strict";

const debug = require("debug")("api");

import express from "express";
import {isIP, isInt} from "validator";
import {getClientIp} from "request-ip";
import Promise from "bluebird";
const SAMPQuery = Promise.promisify(require("samp-query"));
const resolve4 = Promise.promisify(require("dns").resolve4);
import ApiCache from "apicache";
const apicache = ApiCache.options({ debug: true }).middleware;

const start = async () => {
    debug("start");

    const webserver = express();

    webserver.set("case sensitive routing", true);
    webserver.set("json spaces", 2);
    webserver.set("trust proxy", true);
    webserver.set("x-powered-by", false);

    webserver.use((req, res, next) => {
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Expose-Headers", "Content-Type");
        debug(`serving reqeust ${req.url} from ${getClientIp(req)}`);
        next();
    });

    webserver.get("/status", (req, res) => {
示例#2
0
import authorize from './middleware/authorize';

import AuthController from './controllers/AuthController';
import ContactController from './controllers/ContactController';
import GitHubController from './controllers/GitHubController';
import MediaController from './controllers/MediaController';
import PostsController from './controllers/PostsController';
import ProjectCategoriesController from './controllers/ProjectCategoriesController';
import ProjectsController from './controllers/ProjectsController';
import UsersController from './controllers/UsersController';

let router = express.Router();
let cache = apicache.options({
  redisClient: redis.createClient({
    host: process.env.REDIS_HOST,
    port: process.env.REDIS_PORT
  })
}).middleware;

router.post('/auth', AuthController.auth);

router.get('/users', authorize, UsersController.list);
router.get('/users/:id', authorize, UsersController.get);
router.post('/users', authorize, UsersController.create);
router.put('/users/:id', authorize, UsersController.update);
router.delete('/users/:id', authorize, UsersController.delete);

router.post('/media/signed-url', authorize, MediaController.getSignedURL);
router.delete('/media/:key', authorize, MediaController.delete);

router.get('/posts', PostsController.list);
var apicache = require("apicache");

//  Initialize apicache
var cache = apicache.middleware;
apicache.options({ debug: true });

//  Mongoose database schema
var Element = require("./models/element.js");

exports.viewAllElements = function(req, res) {
    req.apicacheGroup = "elements";

    Element.find(function(err, elements) {
        if (err) {
            res.send(err);
        }
        res.json(elements);
    });
};

exports.addElement = function(req, res) {
    apicache.clear("elements");

    var element = new Element();
    element.name = req.body.name;
    element.description = req.body.description;

    element.save(function(err) {
        if (err) {
            res.send(err);
        }