当前位置: 首页 > 软件库 > Web应用开发 > >

nodejs-api-boilerplate

授权协议 MIT License
开发语言 JavaScript
所属分类 Web应用开发
软件类型 开源软件
地区 不详
投 递 者 漆雕皓轩
操作系统 跨平台
开源组织
适用人群 未知
 软件概览


NodeJS-API-Boilerplate

Always in progress ��‍

Get Started

Build

This Boilerplate use webpack 3 to compile code.

Installation

  1. Clone the project git clone https://github.com/EQuimper/nodejs-api-boilerplate.git.
  2. Install dependencies yarn install or npm i
  3. Create a .env file in the root like the .env.example file.
  4. For dev you need to have mongodb db locally. How to?

Install Mongodb

With Homebrew you can just run brew install mongodb and after brew services start mongodb.


Raven Log

For get raven log create account here: Sentry


Body Whitelist

For security have add a whitelist function for your req.body coming from the front end. You can take a look of it in the contants.js file.

const WHITELIST = {
  posts: {
    create: ['title', 'text'],
    update: ['title', 'text'],
  },
  users: {
    create: ['email', 'username', 'password'],
  },
};

Api Doc

Api doc his hosted on surge. Link. For change the url and have your own docs just add you link in the .env file.


Pre-Commit Hook

I've add pre-commit and lint-staged for lint your code before commit. That can maybe take time :bowtie:


Scripts

DEV

yarn dev

or

npm run dev

PS That can crash if this is the first time but don't worry give it 2 sec the scripts gonna work. He just need to created a dist folder :) This way you have only one command to run.

DEV-DEBUG

yarn dev:debug

or

npm run dev:debug

Why toJSON on methods model ?

toJSON() help us to get only the data we want when we push the info to the client. So now we just need to put the user object in the res.json(user) and we received only what we want. Why toAuthJSON() ? Cause if we populated the post we get the toJSON() so the toAuthJSON() is the on to call on signup and login for get the token and _id.

toAuthJSON() {
  return {
    _id: this._id,
    token: `JWT ${this.createToken()}`,
  };
},

toJSON() {
  return {
    _id: this._id,
    username: this.username,
  };
},

For Validation on Request

I'm using Joi in this boilerplate, that make the validation really easy.

export const validation = {
  create: {
    body: {
      email: Joi.string().email().required(),
      password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/).required(),
      username: Joi.string().min(3).max(20).required(),
    },
  },
};

routes.post(
  '/signup',
  validate(UserController.validation.create),
  UserController.create,
);

Seeds

For seed just run one of this following comand. This is helpful in dev for making fake user.

This is only available in dev environment

You can change the number of seed by changing the number in each script inside /scripts/seeds

  • Seeds 10 user yarn db:seeds-user
  • Clear user collection yarn db:seeds-clear-user
  • Clear all collection yarn db:seeds-clear

Monitoring Server on http://localhost:3000/status


Docker

bash scripts/development.sh

Techs


Todo

  • Test seeds controller - Done by cpenarrieta
  • Sendgrid or Other Mail supply
  • Add S3 for user image
  • Change Mocha for Jest

PR are welcome!!! ��

Contributors

Thanks goes to these wonderful people (emoji key):


Emanuel Quimper

�� �� �� �� �� �� �� �� �� ⚠️ ��

Cristian Penarrieta

⚠️

This project follows the all-contributors specification. Contributions of any kind welcome!

 相关资料
  • What is this repository for? Node.js app architecture showcase using Express, MongoDB and Mongoose as ORM. The project has an implementation of an authentication system that uses JSON Web Token to man

  • nodejs-restful-api How to create a RESTful CRUD API using Nodejs? This tutorial will demo how to set up a bare bonesAPI using mongodb as the database. It consist of a User model and controller. The mo

  • Nodejs Expressjs MongoDB Ready-to-use API Project Structure A ready-to-use boilerplate for REST API Development with Node.js, Express, and MongoDB Getting started This is a basic API skeleton written

  • Setup $ yarn install && open http://localhost:4000 && yarn run start Medium: https://medium.com/@wesharehoodies/how-to-setup-a-powerful-api-with-nodejs-graphql-mongodb-hapi-and-swagger-e251ac189649?

  • 这是我的代码,我试图通过它发送请求http://localhost:3000/api/post/article使用邮递员,但我收到无法获取的错误。它不用路由器就可以工作。获取,但使用应用程序。所以我认为问题出在路由器上。 这是server.js文件 这是应用程序文件 这是路由器文件 这是控制器文件

  • 我们有以下DAML合同: 数据某物=选项A |选项B派生(显示,等式) 数据详细信息=id为的详细信息:文本名称:文本状态:文本 模板主带a:方b:方 我知道我们可以为“a”和“b”做以下事情: 字段:{a:daml.party(a),b:daml.party(b),}但是我如何为c和d编写代码呢?